0

我正在尝试创建一个 author.php 页面,该页面由出现在该页面上的作者调用自定义帖子类型。我的问题是,当使用下面的代码时——过滤帖子类型“视频”——代码输出所有自定义帖子类型,而不仅仅是“视频”。需要注意的是,当我删除数组的作者键和变量时'author' => $author,它们的效果是允许代码输出所需的自定义帖子类型“视频”,但来自每个作者。关于如何解决这个问题的任何想法?

使用的代码:

<?php
    $args = array(
        'post_type'      => array( 'audio' ),
        'posts_per_page' => 10,
        'author'         => $author
    );


    $author_videos = new WP_Query( $args );

    if ( $author_videos->have_posts() ) : while ( $author_videos->have_posts() ) : $author_videos->the_post(); ?>
            <p><a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a></p>       
        <?php endwhile;
            wp_reset_postdata();
endif; ?>
4

2 回答 2

0

我自己一直在尝试解决这个问题,并且发现如果您使用author__in单值数组作为作者 ID,那么 WP_Query 似乎会以不同的方式处理它,从而为您提供正确的结果。

$args = array(
    'post_type'      => array( 'audio' ),
    'posts_per_page' => 10,
    'author__in'         => array( $author )
);
于 2014-02-19T03:53:41.260 回答
0

不需要新的 WP_Query,你可以用 修改默认查询author.phppre_get_posts将以下内容放入functions.php

add_action( 'pre_get_posts','so20175501_pre_get_posts' );
function so20175501_pre_get_posts( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        if ( $query->is_author ) {
            $query->set( 'post_type', 'video' );
        }
    }
}
于 2013-11-24T14:25:10.877 回答