You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress子主题分页异常:所有页码显示相同文章

WordPress分页失效修复指南

核心问题原因

点击页码内容不变,基本都是自定义查询未正确传递分页参数,或是主查询被错误修改导致分页逻辑断裂。

分步修复方案

1. 修复自定义查询的分页参数

如果用WP_Query做文章列表查询,必须加入paged参数,否则分页无法生效:

// 获取当前页码,首页默认1
$paged = get_query_var('paged') ?: 1;
// 静态首页改用page参数
// $paged = get_query_var('page') ?: 1;

$args = [
    'post_type' => 'post',
    'posts_per_page' => 10, // 和后台「设置-阅读」的数值保持一致
    'paged' => $paged // 关键:传递分页参数
];
$custom_query = new WP_Query($args);

2. 不要用query_posts()破坏主查询

query_posts()会完全覆盖主查询的分页逻辑,改用pre_get_posts钩子修改主查询:

function adjust_posts_per_page($query) {
    // 只修改前台主查询,不影响后台
    if ($query->is_main_query() && !is_admin() && $query->is_archive()) {
        $query->set('posts_per_page', 10);
    }
}
add_action('pre_get_posts', 'adjust_posts_per_page');

3. 使用原生分页函数

不要自己写分页链接,用WordPress原生的the_posts_pagination(),它会自动处理页码参数:

// 自定义查询后调用分页
if ($custom_query->max_num_pages > 1) {
    the_posts_pagination([
        'mid_size' => 2,
        'prev_text' => '上一页',
        'next_text' => '下一页'
    ]);
    wp_reset_postdata(); // 重置查询,避免影响后续内容
}

4. 排查缓存干扰

临时禁用缓存插件(如WP Rocket、W3 Total Cache)测试,部分插件会把分页页面缓存成首页。如果是缓存问题,在插件设置里排除/page/*路径的缓存。

5. 检查模板文件位置

确保分页代码放在对应模板里:

  • 博客列表:index.php/archive.php
  • 自定义文章类型:archive-{post_type}.php
  • 静态首页:front-page.php

额外排查动作

  • 逐一禁用插件,测试是否是插件干扰了查询逻辑
  • 确认后台「设置-阅读」的「博客页面最多显示」数值,和代码里的posts_per_page一致,避免冲突

内容的提问来源于stack exchange,提问作者JasonDamisch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:27:19