自定义查询是否将私人帖子包括在分页计数计算中?

时间:2016-03-05 作者:Sandra Johansson

我在使用自定义查询显示类别中的私人和已发布帖子时遇到了一些分页问题。

以下是我的自定义查询:

$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$query_args = array( 
\'post_type\' => \'post\', \'post_status\' => array(\'private\', \'publish\'),
\'cat\' => \'1208\',
\'posts_per_page\' => 20, \'paged\' => $paged, ); 

$the_query = new WP_Query( $query_args );

if ( $the_query->have_posts() ) :

while ( $the_query->have_posts() ) : $the_query->the_post();

endwhile; 
endif;

wp_pagenavi( array( \'query\' => $the_query ) );
上面的代码对登录用户正常工作,但我使用此代码将私人帖子显示为来宾的“挑逗”,并且私人帖子正在显示,但没有计入分页计算,因此我们最终得到的页面更少,因为它只统计已发布的帖子。

你知道如何让wordpress将私人帖子和已发布帖子纳入这个自定义查询的分页计数吗?

我卡住了!欢迎有任何想法!谢谢

编辑:进一步调查后,如果作为“页面”运行,但当我使用模板类别名称作为“类别”运行时,此代码可以正常工作。php wordpress只统计类别中“发布”的帖子,不包括私人帖子。我确信这是一个核心问题,我需要在函数中做一些事情。php修改此类别的查询。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

如果要运行此自定义查询来代替常规的主查询,则应在获取帖子之前通过pre_get_posts 行动这将符合你的主题functions.php, 或自定义插件:

function wpd_private_posts_in_categories( $query ) {
    if ( $query->is_category() && $query->is_main_query() ) {
        $query->set( \'post_status\', array(\'private\', \'publish\') );
        $query->set( \'posts_per_page\', 20 );
    }
}
add_action( \'pre_get_posts\', \'wpd_private_posts_in_categories\' );
然后可以在类别模板中运行普通循环,分页将正常工作,私人帖子将包含在计算中。