
本文介绍如何通过php的array_chunk函数将wordpress所有分类按每页3个进行分组,并结合get参数实现简易分页,避免一次性加载全部分类影响性能与用户体验。
在WordPress主题模板中,默认使用 get_categories() 会获取站点全部分类,若分类数量较多,直接循环输出不仅影响页面加载速度,也违背“按需展示”的设计原则。要实现每页仅显示3个分类 + 手动分页,推荐采用服务端分组方案(无需AJAX或插件),核心思路是:先获取完整分类数组,再用 array_chunk() 切割为每组3项的二维数组,最后根据URL参数(如 ?page_number=0)动态读取对应页码的数据。
以下是优化后的完整代码示例(含健壮性处理):
false)
$categories = get_categories([
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC'
]);
// 按每3个一组切分
$chunked_categories = array_chunk($categories, 3);
// 总页数(用于生成分页导航)
$total_pages = count($chunked_categories);
// 安全读取当前页数据:防止越界访问
$current_page_categories = !empty($chunked_categories[$page])
? $chunked_categories[$page]
: [];
// 输出当前页的3个分类(Bootstrap栅格适配)
foreach ($current_page_categories as $category) {
echo '';
}
?>✅ 关键注意事项:
- 安全加固:使用 esc_url() 和 esc_html() 防止XSS攻击;对 $_GET['page_number'] 强制转为整型并限制最小值;
- 空页兜底:检查 $chunked_categories[$page] 是否存在,避免未定义索引警告;
- 分页导航建议:在代码下方添加分页HTML(如数字链接 1),配合 $total_pages 动态生成;
- 性能提示:若分类数极多(如超500),建议改用 WP_Query + tax_query 分页查询,避免内存占用过高;
- SEO友好:分页URL应使用 rel="next"/rel="prev" 标签(需额外添加),或考虑用 paginate_links() 替代手动GET参数。
通过此方案,你既能精准控制每页展示数量,又保留了原生WordPress分类结构的灵活性,是轻量级分类分页的理想实践。










