You need to enable JavaScript to run this app. Woocommerce如何在购物车、结算页及订单全环节修改配送标签
优惠活动
大模型
产品
解决方案
定价
更多

Woocommerce如何在购物车、结算页及订单全环节修改配送标签

问题根源

woocommerce_cart_shipping_method_full_label钩子仅作用于购物车、结算页的前端动态渲染场景,这类场景会实时读取购物车对象数据。订单提交完成后,系统会把当时的配送方法名称直接存入订单元数据,后续订单感谢页、通知邮件、后台订单详情页均直接读取已存储的配送标签,不会再触发购物车相关钩子,也不会关联购物车数据,因此原有修改逻辑无法生效。

完整适配方案

需要在原有前端动态展示逻辑的基础上,新增「订单提交时持久化修改后配送标签」的逻辑,确保修改后的标签会被永久存入订单数据,覆盖所有读取订单配送信息的场景。

第一步:优化原有前端展示代码

给原有逻辑增加前置判断和性能优化,避免无意义的遍历:

// 购物车、结算页前端动态展示适配
add_filter( 'woocommerce_cart_shipping_method_full_label', 'change_shipping_label', 10, 2 );
function change_shipping_label( $full_label, $method ){
    // 非目标配送标签直接返回,减少性能消耗
    if ( strpos( $full_label, 'Standard Shipping (2-3 days)' ) === false ) {
        return $full_label;
    }

    // 遍历购物车检查是否有带自定义附加项的商品
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        if ( !empty( $cart_item['custom_text'] ) ) {
            $full_label = str_replace( 
                "Standard Shipping (2-3 days)", 
                "Shipping with customization (4-6 days)", 
                $full_label 
            );
            // 匹配到即终止遍历,无需遍历剩余商品
            break;
        }
    }
    return $full_label;
}

第二步:新增订单提交时的标签持久化逻辑

利用WooCommerce订单创建阶段的钩子,在订单数据写入存储前修改配送项名称,确保后续所有读取订单的场景都能拿到修改后的标签:

// 订单提交时将自定义配送标签存入订单元数据
add_action( 'woocommerce_checkout_create_order_shipping_item', 'save_custom_shipping_label_to_order', 10, 4 );
function save_custom_shipping_label_to_order( $shipping_item, $package_key, $order, $shared ) {
    // 非目标配送标签直接返回
    $original_label = $shipping_item->get_name();
    if ( strpos( $original_label, 'Standard Shipping (2-3 days)' ) === false ) {
        return;
    }

    // 遍历购物车检查是否有带自定义附加项的商品
    $has_custom_item = false;
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        if ( !empty( $cart_item['custom_text'] ) ) {
            $has_custom_item = true;
            break;
        }
    }

    // 满足条件则修改配送项名称,该值会被永久存入订单
    if ( $has_custom_item ) {
        $shipping_item->set_name( "Shipping with customization (4-6 days)" );
    }
}
生效范围

以上代码会自动覆盖所有涉及配送标签展示的场景:

  • 前端页面:购物车页、结算页、订单感谢页、客户账户的订单历史页
  • 通知邮件:客户下单通知、商家订单通知、各类订单状态更新邮件
  • 后台系统:WooCommerce订单详情页、订单导出/打印相关场景

注意:该逻辑仅对新提交的订单生效,历史已生成的订单由于已经存储了原始配送标签,不会自动更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 17:57:05