这个问题有点老了,但对于那些在现代找到这个问题的人来说,你永远不应该打电话query_posts. 来自Wordpress codex:
query\\u posts()是一种过于简单且有问题的方法,它通过将页面的主查询替换为新的查询实例来修改页面的主查询。它是低效的(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。
。。。
TL;DR从不使用query\\u posts();
相反,你应该使用pre_get_posts
挂钩功能。php如下:
function hwl_home_pagesize( $query ) {
// Behave normally for secondary queries
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_home() ) {
// Display only 1 post for the home page
$query->set( \'posts_per_page\', 1 );
return;
}
// Otherwise, use whatever is set in the Wordpress Admin screen
$query->set( \'posts_per_page\', get_option(\'posts_per_page\'); );
}
add_action( \'pre_get_posts\', \'hwl_home_pagesize\', 1 );
但是,请注意,在某些情况下(例如调整立柱偏移),请使用
pre_get_posts
钩子会弄坏你的分页。修复这一点并不是很难,但需要注意。这里有一个如何修复此问题的示例
here.