这个问题有点老了,但是对于那些在现代时代发现这个问题的人,永远不要调用query_posts。从Wordpress Codex:
query_posts()是通过将页面的主查询替换为查询的新实例来简化页面主查询的过于简单和有问题的方法。它效率低下(重新运行SQL查询),在某些情况下(特别是在处理帖子分页时,通常会完全失败)。
...
TL; DR永远不要使用query_posts();
相反,您应该pre_get_posts
按以下方式使用functions.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
挂钩可能会使您的分页出错。解决这个问题并不困难,但需要注意。还有一个如何解决这个问题的例子在这里。