首页 > 解决方案 > 当 WooCommerce 中的另一种特定运输方式处于活动状态时隐藏特定运输方式

问题描述

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

对于最高 350 美元的订单,网站上有 2 种运输方式
:通过普通邮件免费送货
b. 通过快递邮寄,费用为 35 美元

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

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

标签: phpwordpresswoocommercehook-woocommerceshipping-method

解决方案


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

首先,您需要为“通过特快专递(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 $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 文件中。测试和工作。

刷新运输方式

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


推荐阅读