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

如何在WordPress中自定义分类法术语排序(无需插件)

无需插件自定义WordPress自定义分类法术语排序的方法

嘿,这个问题我熟!想要不用插件自定义WordPress自定义分类法的术语排序,其实有两个实用的办法,看你需求选就行:

方法一:直接按指定ID顺序返回(适合固定排序场景)

你之前的代码问题出在orderby参数上——当你用include指定ID列表时,把orderby设为'ID'会让WordPress按ID的数值大小排序,而不是你传入的顺序。只要把orderby改成'include',就能让术语严格按照你在include里写的ID顺序排列了!

修正后的代码示例:

$custom_terms = get_terms(array(
    'taxonomy' => 'car_listing_tag',
    'include' => array(30, 25, 46, 11, 45), // 这里按你想要的顺序填写术语ID
    'orderby' => 'include', // 关键参数:按include里的ID顺序排序
    'hide_empty' => false, // 可选:如果需要显示没有关联文章的术语,就设为false
));

// 循环输出术语
if (!empty($custom_terms) && !is_wp_error($custom_terms)) {
    echo '<ul>';
    foreach ($custom_terms as $term) {
        echo '<li><a href="' . get_term_link($term) . '">' . $term->name . '</a></li>';
    }
    echo '</ul>';
}

这个方法简单直接,适合排序固定、不需要经常调整的场景。

方法二:添加自定义排序字段(适合灵活调整场景)

如果需要后期在后台可视化调整排序,不用每次改代码,可以给术语添加一个自定义排序字段,通过数字来控制顺序。

步骤1:添加后台排序字段

把下面的代码加到主题的functions.php里,它会在你的car_listing_tag分类法的术语编辑页面添加一个数字输入框:

// 在术语编辑页面添加自定义排序字段
add_action('edit_term_form_fields', 'add_custom_term_order_field', 10, 2);
function add_custom_term_order_field($term, $taxonomy) {
    // 只针对你的自定义分类法
    if ($taxonomy !== 'car_listing_tag') return;
    
    // 获取已保存的排序值,默认0
    $order_value = get_term_meta($term->term_id, 'custom_term_sort_order', true) ?: 0;
    ?>
    <tr class="form-field">
        <th scope="row"><label for="custom_term_sort_order">排序优先级</label></th>
        <td>
            <input type="number" name="custom_term_sort_order" id="custom_term_sort_order" value="<?php echo esc_attr($order_value); ?>" min="0" />
            <p class="description">数字越小,术语排序越靠前</p>
        </td>
    </tr>
    <?php
}

// 保存自定义排序字段的值
add_action('edited_term', 'save_custom_term_order_field', 10, 2);
function save_custom_term_order_field($term_id, $taxonomy) {
    if ($taxonomy !== 'car_listing_tag') return;
    
    if (isset($_POST['custom_term_sort_order'])) {
        update_term_meta(
            $term_id,
            'custom_term_sort_order',
            intval($_POST['custom_term_sort_order'])
        );
    }
}

步骤2:按自定义字段排序获取术语

现在你可以在后台编辑每个car_listing_tag术语,设置排序数字,然后用下面的代码按这个数字排序获取术语:

$sorted_terms = get_terms(array(
    'taxonomy' => 'car_listing_tag',
    'orderby' => 'meta_value_num', // 按数字类型的自定义字段排序
    'meta_key' => 'custom_term_sort_order', // 对应我们添加的字段名
    'order' => 'ASC', // 从小到大排序(数字小的在前)
    'hide_empty' => false, // 可选:显示空术语
));

// 输出代码和方法一类似,这里就不重复啦

这样后期想要调整排序,直接在后台改数字就行,非常灵活!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:23:58