
本文介绍如何使用php的array_chunk函数将wordpress所有分类按每页3个进行分组,并通过url参数控制当前页码,从而实现简洁高效的分类分页展示。
在WordPress开发中,若需在模板页(如首页或自定义页面)中仅展示固定数量(如3个)分类,并支持后续分页浏览,直接遍历全部分类(get_categories())显然不够灵活。此时,推荐采用「分块+分页参数」方案,既保持代码简洁,又避免数据库重复查询。
核心思路是:先获取全部分类数组,再用 array_chunk() 按每3项切分为二维数组;通过 $_GET['page_number'] 获取当前页码(建议从0开始计数),最后安全地输出对应分块中的分类项。
以下是完整、健壮的实现代码(含基础容错与安全处理):
false)
$categories = get_categories([
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC'
]);
// 每页显示3个分类,切分为二维数组
$data = array_chunk($categories, 3);
// 总页数(用于生成分页导航)
$total_pages = count($data);
// 安全检查:确保页码不越界
if ($page >= $total_pages && $total_pages > 0) {
$page = $total_pages - 1; // 跳转到最后一页
}
// 输出当前页的3个分类
if (!empty($data[$page])) {
foreach ($data[$page] as $category) {
if ($category instanceof WP_Term) {
echo '';
}
}
} else {
echo '暂无分类可显示。
';
}
?>? 关键注意事项:
- 安全性:始终对用户输入(如 $_GET['page_number'])进行 (int) 类型转换和边界校验,防止注入或越界访问;
- HTML转义:使用 esc_url() 和 esc_html() 分别处理链接与文本,防范XSS风险;
- 空值防护:检查 $data[$page] 是否存在且非空,避免PHP警告;
- 性能提示:若分类数量极大(如超500个),建议配合缓存(如 wp_cache_set/get)减少重复调用开销;
- 分页导航扩展:实际项目中,可基于 $total_pages 和 $page 渲染数字分页或上/下一页按钮(例如:1)。
该方案无需额外插件或复杂查询,纯原生PHP + WordPress函数即可实现轻量级分类分页,适合主题定制与快速迭代场景。










