WordPress中如何仅获取自定义分类法的子分类?
解决自定义分类法仅获取子分类的问题
问题原因分析
- 第一段代码错误:
get_categories无需嵌套tax_query,该函数本身支持直接指定分类法相关过滤参数,冗余的tax_query逻辑未正确过滤顶级分类。 - 第二段代码错误:变量名不匹配(定义
$categories却打印未声明的$countries),触发未定义变量错误;同时get_terms的字符串参数写法在新版WordPress中不推荐,兼容性差。
正确实现代码
方法1:使用get_terms(推荐自定义分类法使用)
$countries = get_terms(array( 'taxonomy' => 'locations-category', 'hide_empty' => true, // 可选:是否隐藏无内容的分类 'orderby' => 'name', 'order' => 'ASC', 'parent__not_in' => array(0) // 排除顶级分类(parent=0),仅返回子分类 )); echo "<pre>"; print_r($countries); echo "</pre>";
方法2:使用get_categories(本质是get_terms的封装)
$countries = get_categories(array( 'taxonomy' => 'locations-category', 'hide_empty' => true, 'orderby' => 'name', 'order' => 'ASC', 'parent__not_in' => array(0) )); echo "<pre>"; print_r($countries); echo "</pre>";
额外说明
- 如果需要获取某一特定父分类的直接子分类,可直接将
parent__not_in替换为parent参数并指定父分类ID,例如'parent' => 123(123为目标父分类ID)。 - 确保WordPress版本在4.7及以上,
parent__not_in参数从该版本开始支持。
内容的提问来源于stack exchange,提问作者sanad mir
相关产品推荐
相关产品推荐

