当WooCommerce中有其他特定的送货方式处于活动状态时,隐藏特定的送货方式

问题描述

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

对于价格在350美元以下的订单,网站上提供2种运输选项:
一种。通过常规邮件免费送货
b。通过特快专递交付,费用为35美元

订购350个以上时,有3个选项。
一种。通过常规邮件免费送货
b。通过特快专递交付,费用为35 $
C。免费送货。

在此示例中,我想在出现货件c时隐藏货件b。
我进行了很多搜索,但没有找到任何方法。任何帮助表示赞赏。

解决方法

已更新-添加了丢失的;

首先,您需要获得正确的运输费率IDs ,以用于“通过特快专递交付($ 35)”和“通过特快专递免费送货”。

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

enter image description here

其中送货方式费率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 $35)
    $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 $35)
        unset($rates[$flat_express_delivery_rate_id]);
    }
    return $rates;
}

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。

刷新运输方式

保存此代码后,请清空购物车以刷新运输方式,或者如果需要,请转到运输区域设置,然后禁用/保存并重新启用/保存来自运输区域的所有运输方式。