所有类别都显示相同的帖子

时间:2015-12-14 作者:Alex G

谷歌搜索了几个小时,在任何地方都找不到解决方案。=)

这个解决方案也不起作用:Display all posts in current category

无论我如何改变query_posts - 它始终显示所有类别中的所有帖子。

$cat = get_query_var(\'cat\');
$PozCat = get_category ($cat);
//$PozCat->id
query_posts(\'posts_per_page=-1&cat=\'.$PozCat->id);

    while ( have_posts() ) : the_post();

        /* Include the post format-specific template for the content. If you want to
         * this in a child theme then include a file called called content-___.php
         * (where ___ is the post format) and that will be used instead.
         */
        get_template_part( \'content\', \'category\' );

    endwhile;

1 个回复
SO网友:Pieter Goosen

query_posts 断开主查询对象($wp_query)保存查询对象和所有相关查询信息,这些信息会破坏所有条件标记、分页和页面功能,这意味着尝试使用有关主查询对象的任何信息是完全无用的,因为它都被query_posts 正在重置主查询。

这是一个人永远不应该使用的首要原因query_posts.

由于这是一个分类页面,只需删除以下行

cat = get_query_var(\'cat\');
$PozCat = get_category ($cat);
//$PozCat->id
query_posts(\'posts_per_page=-1&cat=\'.$PozCat->id);
您的分类页面将再次正常工作。如果需要更改类别页面上的主查询,请使用pre_get_posts 在生成SQL以运行主查询之前,正确更改查询变量。以下内容将返回您分类页面上的所有帖子

add_action( \'pre_get_posts\', function ( $q )
{
    if (    !is_admin() // Only target front end
         && $q->is_main_query() // Only target the main query
         && $q->is_category() // Only target category pages, change to $q->is_tax() for taxonomy pages
    ) {
        $q->set( \'posts_per_page\', -1 );
    }
});