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
相关产品推荐
相关产品推荐

