静态首页Pagination异常:不同页面始终显示相同文章求助
问题分析与修复方案
这问题我之前帮好几个开发者排查过,大概率是分页参数没正确传递到文章查询逻辑里,或者静态生成时没处理好分页路由的动态数据加载,下面分常见场景给你拆解修复方法:
一、如果你用的是WordPress做静态首页(比如把首页设置为静态页面并展示分类文章)
最常见的错误是查询文章时没引入paged参数,导致所有分页页面都拉取第一页的数据。
修复步骤:
- 在你的静态首页模板文件(比如
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; - 构造WP_Query时加入分页参数:
$args = array( 'category_name' => '你的分类别名', // 指定要展示的分类 'posts_per_page' => 10, // 每页显示的文章数量 'paged' => $paged // 关键:传递当前页码 ); $category_posts = new WP_Query($args); - 确认分页导航函数(比如
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为例的修复步骤:
- 在
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 }; } - 在
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) } }; } - 在页面组件里渲染对应页码的文章和分页导航即可。
三、其他可能的原因
- 缓存问题:如果你的站点用了CDN或者服务器缓存,可能所有
page/*路径都被缓存成首页内容。需要检查缓存规则,排除分页路径的缓存,或者更新缓存策略。 - 服务器路由错误:比如Nginx/Apache的重写规则没正确处理分页路径,导致所有
page/2这类请求都返回首页。需要检查服务器配置,确保分页路径能正确传递参数到页面逻辑。
如果还有具体的代码片段或者使用的工具/框架信息,能更精准地定位问题~
内容的提问来源于stack exchange,提问作者Ante Medic
相关产品推荐
相关产品推荐

