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

get_term_children传入36、37父ID数组获取子术语无效如何解决

问题原因

WordPress原生get_term_children()函数的第一个参数仅支持传入单个整数类型的父术语ID,不接收数组格式的多ID入参,直接传入ID数组array(37,36)会触发参数类型校验错误,无法返回预期的子术语结果。

可行解决方案

方案1:循环遍历父ID合并结果(全版本兼容)

该方案无WordPress版本限制,兼容性最强,适合所有场景:

$parent_ids = [36, 37];
$all_child_cats = [];

foreach ($parent_ids as $pid) {
    $res = get_term_children((int)$pid, 'product_cat');
    if (!is_wp_error($res)) {
        $all_child_cats = array_merge($all_child_cats, $res);
    }
}

// 去除重复的子术语ID
$categories = array_unique($all_child_cats);

方案2:直接用get_terms查询(性能更优,WordPress 4.6+支持)

该方案仅需一次数据库查询,性能高于循环调用,只要站点WordPress版本不低于4.6即可使用:

$categories = get_terms([
    'taxonomy'   => 'product_cat',
    'parent__in' => [36, 37], // 直接传入多父ID数组
    'hide_empty' => false, // 可根据业务需求调整,设为true则只返回绑定了内容的子术语
    'fields'     => 'ids' // 若需要获取完整的术语对象,删除此行即可
]);
注意事项
  • 如果不确定线上站点的WordPress版本,优先选择方案1,避免出现兼容问题
  • 两个父术语如果存在共同归属的子术语,记得加array_unique()做去重处理,避免重复数据
  • 如果需要递归获取所有层级的子术语(即孙级、曾孙级术语),方案1默认支持递归查询,方案2需要额外加'hierarchical' => true参数并调整查询逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:03:50