<?php query_posts(\'offset=1\'); ?>
这是你的问题。分页功能在主查询中起作用,但您在每一页的开头替换主查询,您唯一告诉它的是偏移量是1,它怎么知道您想要第2页?!
因此,我将提出一种显著改进的方法。一种不会使数据库查询数量翻倍、污染主查询并且速度显著更快的查询:
这个pre_get_posts
滤器
query_posts
不会修改WP检索到的帖子,WP仍然会去获取它们。该函数将替换查询,因此让我们修改原始查询以获取我们想要的内容,例如。
function add_offset_to_query( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( \'offset\', \'1\' );
}
}
add_action( \'pre_get_posts\', \'add_offset_to_query\' );
请记住,尽管分页依赖于
offset
参数,因此此查询永远不会真正使用分页。
你还需要把这个放进去functions.php
. WP使用查询来决定加载哪个模板,因此在加载模板时,查询已经运行。
一个好的经验法则是:
切勿使用query_posts
, 假装它不存在,没有有效的用途,它只会带来痛苦和头痛如果你需要更改WP获取的帖子,请使用pre_get_posts
如果您需要为页面的某个子部分获取一些帖子,请使用WP_Query
循环get_posts
, get_pages
, etc等所有用途WP_Query
, 节省一些时间,省去中间人,而不是学习许多奇怪的选择