【问题标题】:Hide specific shipping method when another specific shipping method is active in WooCommerce当 WooCommerce 中的另一种特定运输方式处于活动状态时隐藏特定运输方式
【发布时间】:2021-02-11 04:57:30
【问题描述】:

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

对于最高 350 美元的订单,网站上有 2 种送货方式:
一种。通过普通邮件免费送货
湾。快递邮寄,收费 35 美元

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

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

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce shipping-method


    【解决方案1】:

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

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

    刷新送货方式

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

    【讨论】:

    • 哇,非常感谢您的快速解决方案以及修复我的问题中的错误。它没有问题!非常感谢您的宝贵时间。
    猜你喜欢
    • 2019-10-17
    • 2018-09-08
    • 2019-09-04
    • 2019-03-15
    • 1970-01-01
    • 2018-07-10
    • 2020-10-03
    • 2021-06-24
    相关资源
    最近更新 更多