作者关键&自定义帖子类型

时间:2013-11-24 14:11:22

标签: wordpress custom-post-type author

我正在尝试创建一个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; ?>

2 个答案:

答案 0 :(得分:0)

不需要新的WP_Query,您可以使用pre_get_posts修改author.php上的默认查询,将以下内容放入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' );
        }
    }
}

答案 1 :(得分:0)

我自己一直试图解决这个问题,并且发现如果你使用author__in的单值数组作为作者ID,那么WP_Query似乎对它的处理方式不同,给你正确的结果

$args = array(
    'post_type'      => array( 'audio' ),
    'posts_per_page' => 10,
    'author__in'         => array( $author )
);