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

如何根据商品配送类别修改WooCommerce结账页配送方式标题?

修复WooCommerce根据配送类别修改配送方式标题的代码问题

你的代码未生效主要有两个核心问题:

  • 赋值语句覆盖逻辑:if-else块之后直接写了两行$rates[$rate_key]->label赋值,不管前面的判断结果,最终所有flat_rate的标题都会被改成standard Shipping,完全覆盖了之前的条件判断。
  • 逻辑单一,无法区分多配送类别:当前代码只针对单个配送类别ID(64),没法实现你需要的3-day shipping、freight、standard shipping三类不同的标题切换需求。

修复后的代码

下面是适配你需求的完整代码,支持根据不同配送类别切换对应配送方式的标题:

add_filter('woocommerce_package_rates', 'change_shipping_method_name_based_on_shipping_class', 50, 2);
function change_shipping_method_name_based_on_shipping_class($rates, $package){
    // 定义配送类别ID与对应标题的映射
    // 替换成你店铺实际的配送类别ID和标题
    $shipping_class_map = [
        64 => 'Standard Shipping', // 对应standard shipping类别
        65 => '3-Day Shipping',    // 对应3-day shipping类别
        66 => 'Freight'            // 对应freight类别
    ];

    $matched_class_id = false;

    // 遍历购物车商品,匹配对应的配送类别
    // 注:如果购物车有多个不同配送类别的商品,这里取第一个匹配的类别
    // 可根据需求调整逻辑,比如优先某个类别或提示多类别冲突
    foreach( $package['contents'] as $cart_item ) {
        $item_class_id = $cart_item['data']->get_shipping_class_id();
        if( isset($shipping_class_map[$item_class_id]) ){
            $matched_class_id = $item_class_id;
            break;
        }
    }

    // 根据匹配到的类别修改配送方式标题
    foreach ( $rates as $rate_key => $rate ) {
        // 针对Flat Rate配送方式修改标题
        if ( 'flat_rate' === $rate->method_id ) {
            if( $matched_class_id ){
                $rates[$rate_key]->label = __( $shipping_class_map[$matched_class_id], 'woocommerce' );
            } else {
                // 没有匹配到自定义类别时使用默认标题
                $rates[$rate_key]->label = __( 'Default Shipping', 'woocommerce' );
            }
        }

        // 如果Freight是单独的配送方式(比如method_id为'freight_shipping'),单独处理
        if ( 'freight_shipping' === $rate->method_id ) {
            $rates[$rate_key]->label = __( 'Freight', 'woocommerce' );
        }
    }

    return $rates;
}

关键说明

  1. 配送类别ID替换:把$shipping_class_map里的ID替换成你店铺实际的配送类别ID,可在WooCommerce后台「产品 > 配送类别」中查看每个类别的ID。
  2. 多商品逻辑调整:如果购物车存在多个不同配送类别的商品,当前代码会取第一个匹配的类别,可根据业务需求修改这部分逻辑(比如禁止混合类别、显示合并标题等)。
  3. 配送方式method_id:如果你的Freight是单独的配送插件(而非Flat Rate下的类别),需要替换对应的method_id,可开启WooCommerce调试模式查看具体值。
  4. 清除缓存:修改代码后,进入WooCommerce后台「设置 > 配送 > 配送选项」,点击「更新」按钮清空配送缓存,否则修改可能不会立即生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:53:09