当 WooCommerce 中另一个特定的运输方式处于活动状态时隐藏特定的运输方式

Hide specific shipping method when another specific shipping method is active in WooCommerce

有很多方法可以在免运费激活时隐藏送货方式。
我的问题是我总是为网站上的每个订单提供免费送货服务。
同时我还提供需要额外付款的“更快”交付。
这就是为什么互联网上的代码在这种情况下对我没有帮助。
那么当另一种特定的运输方式出现时,如何隐藏特定的运输方式。
我将举一个例子。

对于 350 美元以下的订单,网站上有 2 种送货方式:
一种。普通邮件免费送货
b.通过特快专递递送,费用为 35 美元

订购超过350时,有3种选择。
一种。普通邮件免费送货
b.通过特快专递寄送,费用为 35 美元
C。特快专递免运费。

在这个例子中,我想在出现货件c时隐藏货件b。
我搜索了很多,但没有找到任何方法。感谢您的帮助。

已更新 - 添加了一个缺失的 ;

首先,您需要为“特快专递 ($35)”和“特快专递免费送货”获取正确的运费 ID

这可以在检查运输方式单选按钮上生成的 html 代码(使用浏览器检查器)时执行。所以你会看到类似的东西:

其中送货方式费率 ID 为 free_shipping:10 (单选按钮“值”)

当“特快专递免费送货”可用时,下面的代码将隐藏“特快专递付费送货(费用 $35)”$(您必须设置两个运费 ID)*:

add_filter( 'woocommerce_package_rates', 'customizing_shipping_methods', 10, 2 );
function customizing_shipping_methods( $rates, $package ) {
    $flat_express_delivery_rate_id = 'flat_rate:12'; // Paid delivery by express mail (cost )
    $free_express_delivery_rate_id = 'free_shipping:10'; // Free delivery by express mail
    
    // When Free delivery by express mail is available
    if( isset($rates[$free_express_delivery_rate_id]) ) {
        // Remove Paid delivery by express mail (cost )
        unset($rates[$flat_express_delivery_rate_id]);
    }
    return $rates;
}

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

Refresh shipping methods

Once you have saved this code, empty cart to refresh shipping methods, or if needed, go to shipping areas settings, then disable / save and re-enable / save any shipping methods from a shipping zone.