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

如何对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>'; // 补上你原来遗漏的闭合标签
} 
?>

额外优化提示

  1. 我给代码加了esc_attr()和esc_html(),这是WordPress开发的安全最佳实践,能避免XSS注入风险,建议保留~
  2. 你原来的子分类循环里重复调用get_term()是没必要的——get_terms()返回的数组已经包含完整的分类对象,直接用属性就能获取值,还能省一次数据库查询,让代码更高效。

特殊场景拓展(可选)

如果以后需要按自定义字段排序,还可以把orderby设为'meta_value'或'meta_value_num',再配合meta_key参数指定自定义字段的键,但你的场景用默认的名称排序就完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:27:40