如何更改购物车、结账和订单中的 Woocommerce 运输标签

How to change Woocommerce shipping labels in cart, checkout and also on orders

我正在尝试根据购物车中的任何产品是否有插件来更改运输标签。

为此,我使用 How can I modify a Woocommerce shipping label 答案代码,并进行了一些更改以满足我的需要。

HTML:

<input type="hidden" name="shipping_method[0]" data-index="0" id="shipping_method_0_flat_rate5" value="flat_rate:5" class="shipping_method">
<label class="shipping__list_label" for="shipping_method_0_flat_rate5">Standard Shipping (2-3 days): <span class="woocommerce-Price-amount amount"><bdi>3,95<span class="woocommerce-Price-currencySymbol">€</span></bdi></span></label>

因此标签标准送货(2-3 天) 必须显示定制送货(4-6 天) 如果某个满足条件(在这种情况下:字段 custom_text 不为空)。

functions.php:

//Change Standard Shipping Label if product is customized
add_filter( 'woocommerce_cart_shipping_method_full_label', 'change_shipping_label', 10, 2 );
function change_shipping_label( $full_label, $method ){
    
    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 );
        }
    }   
    return $full_label;
}

这是成功的。如果满足条件,标签将更改为 Shipping with customized (4-6 days) prior checkout。

但是,标签更改在结帐后不适用(感谢页面和电子邮件,它显示原始的“标准运输(2-3 天)”)。

我可以在致谢页面和电子邮件中显示此标签更改吗?

更新 2

根据提供的代码和信息,更改订单上的特定运输标签,使用运费 ID 来定位所需的运输方式:

add_action( 'woocommerce_checkout_create_order_shipping_item', 'action_wc_checkout_create_order_shipping_item', 10, 4 );
function action_wc_checkout_create_order_shipping_item( $item, $package_key, $package, $order ) {
    // Targeting "flat_rate:5" by its instance ID
    if( $item->get_instance_id() == 5 ) {
        $item->set_method_title( "Shipping with customization (4-6 days)" );
    }
}

代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。

相关: