查询帖子未阅读正确的类别(_P)

时间:2012-09-23 作者:Mowgs Ly

我使用下面的代码在两个单独的页面上显示来自一个类别的帖子。第一页列出类别32,另一页列出类别31。但是,在第二个页面上,它会显示两个类别中的帖子,而第一个页面不会显示其类别中的所有帖子。第一页有13页,但只有10页。第二页显示14,但有19。我没有代码告诉页面只显示一定数量的帖子。知道为什么会这样吗?

<?php
query_posts(\'cat=32\');
while (have_posts()) : the_post();
the_content();
endwhile;
?>
我以前使用list\\u category\\u posts插件,但我认为这是一个更简单的解决方案。

1 个回复
SO网友:Tom J Nowell

首先,避免query_posts, 而是使用WP\\u查询或挂钩到pre_get_posts. query_postsbad 练习是性能下降/下降的原因,也是许多问题的根源。作为一名全职开发人员,我不会强烈建议所有人都使用该功能,许多著名的WordPress开发人员和WordPress核心开发人员也会这么说。

代码不起作用的原因是query_posts 重做查询,浪费主查询,并删除包含的所有分页查询变量。

而是使用pre_get_posts 过滤以修改主页,例如更改主页上的帖子数量:

function hwl_home_pagesize( $query ) {
    if ( is_home() && is_main_query()) {
        //Display only 1 post for the original blog archive
        $query->query_vars[\'posts_per_page\'] = 1;
        return;
    }
}
add_action(\'pre_get_posts\', \'hwl_home_pagesize\', 1);

http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

结束