
本文介绍在WordPress中正确获取多个指定父分类(如ID为36和37)下所有子分类的方法,指出get_term_children()不支持数组参数,并提供可直接使用的分步解决方案与实用代码示例。
本文介绍在wordpress中正确获取多个指定父分类(如id为36和37)下所有子分类的方法,指出`get_term_children()`不支持数组参数,并提供可直接使用的分步解决方案与实用代码示例。
WordPress 的 get_term_children() 函数设计为仅接受单个父分类 ID 作为第一个参数,不支持传入数组(例如 array(36, 37))。若强行传递数组,函数将无法解析,返回空结果或触发警告,导致子分类无法正常获取。
✅ 正确做法是:对每个父分类 ID 单独调用 get_term_children(),再合并结果。以下是推荐实现方式:
// 分别获取两个父分类下的子分类ID
$children_36 = get_term_children(36, 'product_cat');
$children_37 = get_term_children(37, 'product_cat');
// 合并并去重(防止重复ID)
$all_children = array_unique(array_merge($children_36, $children_37));
// 可选:转换为完整分类对象(便于获取名称、链接等)
if (!empty($all_children)) {
$child_terms = get_terms([
'taxonomy' => 'product_cat',
'include' => $all_children,
'hide_empty' => false,
]);
if (!is_wp_error($child_terms)) {
foreach ($child_terms as $term) {
echo '<a href="'%20.%20get_term_link(%24term)%20.%20'">' . esc_html($term->name) . '</a><br>';
}
}
}
⚠️ 注意事项:
- get_term_children() 返回的是子分类的ID数组(整型),不包含分类元数据(如名称、链接),如需展示详情,请配合 get_terms() 使用 include 参数批量查询;
- 若父分类本身不存在或无子分类,对应结果将为空数组,建议使用 !empty() 做安全判断;
- 对于大量分类层级,避免在循环中多次调用该函数;如需递归获取所有后代(含孙级),应改用 get_terms() 配合 'parent' 和 'depth' 参数,或自定义递归函数。
总结:多父级子分类获取必须“分次调用 + 合并处理”,这是 WordPress 分类体系的设计约束,而非缺陷。掌握这一模式,可灵活扩展至任意数量的父分类处理场景。











