php - 当 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 $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 文件中。测试和工作。
刷新运输方式
保存此代码后,清空购物车以刷新运输方式,或者如果需要,转到运输区域设置,然后禁用/保存并重新启用/保存来自运输区域的任何运输方式。
推荐阅读
- office-js - 如何从 Visual Studio 2017 访问 Intellisense for Excel API 1.7?
- mysql - 即时聊天应用程序检索聊天记录
- arrays - 从 mongodb 中的对象数组中删除 id
- ruby - 重构冗余循环逻辑
- python - 如何使 Python 模块的 __init__.py 将其 help() 委托给同级文件?
- apache - Apache Solr 7.4:嵌套“_childDocuments_”不起作用,文档仍然是扁平的
- unity3d - GetComponent 要求请求的组件 'AudioSource[]' 派生自 MonoBehaviour 或 Component 或者是一个接口
- unicode - unicode 中的大乘积∏符号
- git - 显示给定提交 ID 和前一个提交之间的差异
- scala - 生成输出字符串,而行依赖于 Spark 和 Scala 中的另一行