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

WordPress分类页面分页失效,所有页面内容重复问题求助

WordPress分类页面分页内容重复问题修复

问题根源

  • get_posts() 默认不处理分页逻辑,且你固定了 offset => 0,导致所有页面都从第1篇文章开始读取
  • the_posts_pagination() 依赖主查询的分页参数,自定义查询未传递正确的分页上下文
  • 循环中 $display 每次赋值会覆盖之前的内容,最终只返回最后一篇文章的链接
  • 参数拼写错误:category__not_inint 应为 category__not_in

修复后的代码

global $post;
// 获取当前分类ID
$current_cat = get_the_category($post->ID)[0]->cat_ID;
// 获取当前页码,默认显示第1页
$paged = get_query_var('paged') ? get_query_var('paged') : 1;

// 用WP_Query替代get_posts,原生支持分页逻辑
$custom_query = new WP_Query(array(
    'posts_per_page' => 16,
    'paged' => $paged, // 传递当前页码,让查询知道该加载哪一页的内容
    'category__not_in' => array($current_cat), // 修正参数拼写错误
    'post_status' => 'publish',
    'order' => 'ASC'
));

$display = '';
if ($custom_query->have_posts()) {
    while ($custom_query->have_posts()) {
        $custom_query->the_post();
        
        $city_name = get_field("city-name");
        // 用.=拼接内容,避免每次循环覆盖之前的结果
        $display .= '<a href="' . get_permalink() . '">' . $city_name . '</a>';
    }
    // 基于自定义查询的分页数据生成导航
    the_posts_pagination(array(
        'total' => $custom_query->max_num_pages,
        'current' => $paged
    ));
    wp_reset_postdata(); // 重置查询上下文,避免干扰后续主循环
}

return $display;

关键修改说明

  • 改用 WP_Query:原生支持分页参数,能自动计算总页数和当前页的文章范围,解决重复加载第一页的问题
  • 引入 $paged 变量:动态获取当前页面的页码,让查询知道该加载哪一页的内容
  • 修正参数拼写:category__not_inint 改为 category__not_in,确保排除指定分类的逻辑生效
  • 拼接内容:使用 .= 替代 =,保留所有文章的链接,而不是只返回最后一篇
  • 传递分页上下文:给 the_posts_pagination() 传入自定义查询的总页数和当前页码,确保分页导航逻辑正确
  • 重置查询:用 wp_reset_postdata() 替代 wp_reset_query(),更贴合自定义查询的重置场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:10:35