如果首页设置为显示帖子,那么无论主题是否显示这些帖子,都会运行对这些帖子的查询。这就是为什么你在没有帖子的情况下进行分页。您可以通过临时删除主题首页来测试这一点。php(或其他)。你应该看到你所有的帖子都有正确的分页。
您有两种选择来解决此问题:
使用静态首页
如果将首页设置为静态(这可能是一个空白页),则主页的原始查询现在将仅限于此页-因此,没有分页。
更改主查询,而不是使用query_posts
(无论如何,你都不应该这样做——但那是another question), 更改原始查询。您应该能够使用pre_get_posts
挂钩和is_home()
和is_front_page()
. 类似这样:
/**
* Alters the font-page main query
*/
add_action( \'pre_get_posts\', \'wpse_217284_alter_front_page_query\' );
function wpse_217284_alter_front_page_query( $query ) {
// don\'t run on the backend
if ( is_admin() )
return;
// Only run on the front page main query
if ( $query->is_main_query() && is_front_page() ) {
$query->set( \'orderby\', \'rand\' );
$query->set( \'posts_per_page\', 10 );
}
return;
}
请注意,这还没有经过测试,只是一个示例,因此可能无法正常工作,但它应该会让您知道该怎么做