如何对WordPress get_term函数获取的数组进行字母排序?
如何让get_terms()返回的分类术语按字母排序?
嘿,这事儿好办!WordPress的get_terms()函数本身就内置了排序参数,完全不用自己写额外的排序逻辑,咱们直接在参数数组里加俩配置就行。
核心修改点
给你的get_terms()调用添加两个关键参数:
orderby:指定排序依据,填'name'就是按术语名称排序order:指定排序方向,'ASC'是A-Z升序,'DESC'是Z-A降序
修改后的完整代码
<?php $terms = get_terms(array( 'taxonomy' => 'behandlungsfeld', 'parent' => 0, 'post_status' => 'publish', 'orderby' => 'name', // 父分类按名称排序 'order' => 'ASC' // 升序排列(A-Z) )); foreach ($terms as $term) { $the_term_children = get_terms(array( 'taxonomy' => 'behandlungsfeld', 'child_of' => $term->term_id, 'orderby' => 'name', // 子分类同样按名称排序 'order' => 'ASC' )); echo '<li data-dropdown-text="' . esc_attr($term->name) . '">'; // 添加入站安全转义 echo '<ul>'; foreach ($the_term_children as $term_child) { // 这里无需再次调用get_term(),$the_term_children已经是完整的WP_Term对象 echo '<li>' . esc_html($term_child->name) . '</li>'; // 添加入站安全转义 } echo '</ul>'; echo '</li>'; // 补上你原来遗漏的闭合标签 } ?>
额外优化提示
- 我给代码加了
esc_attr()和esc_html(),这是WordPress开发的安全最佳实践,能避免XSS注入风险,建议保留~ - 你原来的子分类循环里重复调用
get_term()是没必要的——get_terms()返回的数组已经包含完整的分类对象,直接用属性就能获取值,还能省一次数据库查询,让代码更高效。
特殊场景拓展(可选)
如果以后需要按自定义字段排序,还可以把orderby设为'meta_value'或'meta_value_num',再配合meta_key参数指定自定义字段的键,但你的场景用默认的名称排序就完全够用啦。
内容的提问来源于stack exchange,提问作者Hasbulla
相关产品推荐
相关产品推荐

