分页控件可显示但无法跳转至第二页,点击后URL不追加/page/2/求助
解决WordPress分页无法跳转到第二页的问题
嘿,我看你遇到了分页点击第二页没反应的问题——鼠标悬停显示/page/2/但点击后路径没变化,这大概率是因为你用query_posts时没正确处理分页参数,而且这个函数本身就容易干扰主查询的分页逻辑。下面给你拆解问题和修复方案:
问题出在哪?
query_posts会直接替换WordPress的主查询全局变量,你没在查询参数里加入分页(paged)参数,导致点击分页链接时,系统识别不到当前要跳的页码,自然没法正确跳转。- 另外,你用的
showposts是旧版参数,现在官方推荐用posts_per_page代替啦。
修复方案:改用WP_Query(官方推荐的自定义查询方式)
我们换用WP_Query来做自定义查询,这样不会打乱主查询的分页逻辑,同时手动传递分页参数:
修改后的完整代码
<?php if ($type == "events" ) { ?> <div class="row"> <h4>Filter:</h4> <?php // 获取当前页码,默认显示第1页 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // 创建自定义查询,带上分页参数 $events_query = new WP_Query(array( 'post_type' => 'events', 'posts_per_page' => 1, // 替换旧的showposts参数 'paged' => $paged, // 关键:传递分页参数,让系统识别当前页码 )); ?> <ul> <?php while ($events_query->have_posts()) : $events_query->the_post(); ?> <li> <h2><?php the_title(); ?>&...</h2> </li> <?php endwhile; ?> </ul> <?php // 输出标准分页导航(如果之前没写的话) the_posts_pagination(array( 'mid_size' => 2, 'prev_text' => '上一页', 'next_text' => '下一页', )); // 重置查询,避免影响后续模板的内容输出 wp_reset_postdata(); ?> </div> <?php } ?>
几个关键改进点
- 用WP_Query替代query_posts:这是WordPress官方推荐的自定义查询方法,不会破坏主查询的全局状态,分页逻辑自然能正常工作。
- 添加paged参数:通过
get_query_var('paged')获取当前页码,确保点击分页链接时,系统能知道要跳转到哪一页。 - 替换showposts为posts_per_page:
showposts已经被废弃了,用posts_per_page才是符合当前WordPress版本的写法。 - 调用wp_reset_postdata():自定义查询结束后一定要重置全局的
$post变量,不然后面的模板函数(比如the_title())可能会输出错误的内容。 - 标准分页导航:用
the_posts_pagination()生成的分页链接会自动处理/page/2/这样的路径,不用自己手动写链接了。
额外要注意的小细节
- 如果你之前是手动写的分页链接,要确保链接里的
paged参数正确传递,比如链接要包含?paged=2或者对应固定链接格式的/page/2/。 - 检查下后台的固定链接设置:如果选的是“文章名称”模式,分页链接会自动生成
/page/2/的格式,要是设置不对也可能导致分页失效哦。
内容的提问来源于stack exchange,提问作者user2751645
相关产品推荐
相关产品推荐

