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

WordPress子分类分页计数异常,页码显示过多求助

问题解决:子分类分页页码显示异常

问题根源

你使用的the_posts_pagination()函数是绑定WordPress主查询($wp_query)的,它会读取主查询的max_num_pages值,而非你自行计算的$max_num_pages。主查询默认针对文章内容,其分页逻辑和你自定义的子分类分页完全无关,这才导致页码显示成了主查询的默认分页数量(通常为10页)。

修复方案

改用paginate_links()函数,它支持自定义所有分页参数,能完全适配你计算的子分类分页逻辑。替换原代码中的the_posts_pagination()部分即可:

修改后的完整代码

$taxonomy   = 'category';

// 统计分类ID1下的所有子分类数量
$argscnt = array('parent' => 1);
$cat_count = count(get_categories($argscnt));

// 每页显示的子分类数量
$cats_per_page = 8;

// 计算总页数和当前页
$max_num_pages = ceil($cat_count / $cats_per_page);
$current_page = (get_query_var('paged')) ? get_query_var('paged') : 1; // 静态首页请改为'page'
$offset = ($cats_per_page * $current_page) - $cats_per_page;

$cats = get_terms([
    'taxonomy' => $taxonomy,
    'order'    => 'DESC',
    'child_of' => 1,
    'orderby'  => 'count',
    'number'   => $cats_per_page,
    'offset'   => $offset
]);

foreach ($cats as $cat) {
    // 子分类内容输出逻辑
    echo '<div>' . $cat->name . '</div>';
}

// 自定义分页输出
$pagination_args = array(
    'base'      => get_pagenum_link(1) . '%_%',
    'format'    => 'page/%#%/',
    'current'   => max(1, $current_page),
    'total'     => $max_num_pages,
    'mid_size'  => 2,
    'prev_text' => __('Back', 'textdomain'),
    'next_text' => __('Onward', 'textdomain'),
    'type'      => 'list'
);

echo paginate_links($pagination_args);

关键说明

  • paginate_links()的total参数直接传入你计算好的$max_num_pages,确保页码基于子分类实际数量生成。
  • base参数定义分页链接的基础格式,保证分页跳转地址正确。
  • format参数设置分页的URL结构,适配WordPress固定链接规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:03:24