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

静态首页Pagination异常:不同页面始终显示相同文章求助

问题分析与修复方案

这问题我之前帮好几个开发者排查过,大概率是分页参数没正确传递到文章查询逻辑里,或者静态生成时没处理好分页路由的动态数据加载,下面分常见场景给你拆解修复方法:

一、如果你用的是WordPress做静态首页(比如把首页设置为静态页面并展示分类文章)

最常见的错误是查询文章时没引入paged参数,导致所有分页页面都拉取第一页的数据。

修复步骤:

  1. 在你的静态首页模板文件(比如page-home.php)里,先获取当前页码:
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    // 注意:如果是首页的分页,有些主题需要用'page'代替'paged',可以试试:
    // $paged = (get_query_var('page')) ? get_query_var('page') : 1;
    
  2. 构造WP_Query时加入分页参数:
    $args = array(
        'category_name' => '你的分类别名', // 指定要展示的分类
        'posts_per_page' => 10, // 每页显示的文章数量
        'paged' => $paged // 关键:传递当前页码
    );
    $category_posts = new WP_Query($args);
    
  3. 确认分页导航函数(比如the_posts_pagination())是基于这个自定义查询的,而不是默认的主查询:
    if ($category_posts->have_posts()) {
        while ($category_posts->have_posts()) {
            $category_posts->the_post();
            // 输出文章内容
        }
        // 用自定义查询的分页导航
        the_posts_pagination(array(
            'total' => $category_posts->max_num_pages
        ));
        wp_reset_postdata();
    }
    

二、如果你用的是静态站点生成器(比如Next.js、Gatsby)

这类工具的问题通常出在没有为每个分页页面生成独立的静态数据,或者查询时没根据页码计算偏移量。

以Next.js为例的修复步骤:

  1. 在pages/page/[page].js(或者对应路由文件)里,先配置getStaticPaths生成所有分页路径:
    export async function getStaticPaths() {
        // 先获取该分类下的总文章数
        const totalPosts = await fetch('/api/get-category-posts-count?slug=你的分类别名').then(res => res.json());
        const perPage = 10;
        const totalPages = Math.ceil(totalPosts / perPage);
        // 生成所有分页路径
        const paths = Array.from({ length: totalPages }, (_, i) => ({
            params: { page: (i + 1).toString() }
        }));
        return { paths, fallback: false };
    }
    
  2. 在getStaticProps里根据当前页码获取对应文章:
    export async function getStaticProps({ params }) {
        const page = parseInt(params.page);
        const perPage = 10;
        const offset = (page - 1) * perPage;
        // 根据分类、偏移量、每页数量查询文章
        const posts = await fetch(`/api/get-category-posts?slug=你的分类别名&offset=${offset}&limit=${perPage}`).then(res => res.json());
        return { props: { posts, page, totalPages: Math.ceil(totalPosts / perPage) } };
    }
    
  3. 在页面组件里渲染对应页码的文章和分页导航即可。

三、其他可能的原因

  • 缓存问题:如果你的站点用了CDN或者服务器缓存,可能所有page/*路径都被缓存成首页内容。需要检查缓存规则,排除分页路径的缓存,或者更新缓存策略。
  • 服务器路由错误:比如Nginx/Apache的重写规则没正确处理分页路径,导致所有page/2这类请求都返回首页。需要检查服务器配置,确保分页路径能正确传递参数到页面逻辑。

如果还有具体的代码片段或者使用的工具/框架信息,能更精准地定位问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:45:09