这是场景:
我使用 UPS 运送饮料托盘。然而,将5盘饮料装进盒子里就变得非常困难。因此,我想禁用 UPS 运输方式,并且仅在客户订购 5 盘或以上饮料时才显示统一费率运输。我有大约 7 种不同的饮料,但我可以将这些饮料添加到运输类别中以简化代码。
我想扩展此代码以包含特定类别中的产品数量,或者可能是运输类别中的产品出现的次数。因此,如果购物车有 5 个或更多此特定运输类别的产品,则应删除我在数组下指定的运输方式。
如何扩展此代码以包括产品数量?
// 如果我们发现运输类别和运输类别中的产品数量等于或大于 5。
add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_shipping_class', 10, 2 );
function hide_shipping_method_based_on_shipping_class( $rates, $package )
{
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Shipping Class To Find
$class = 182;
// Number Of Shipping Class Items In Cart
$amount = 5;
// Shipping Methods To Hide
$method_key_ids = array('wf_shipping_ups:07', 'wf_shipping_ups:08', 'wf_shipping_ups:11', 'wf_shipping_ups:54', 'wf_shipping_ups:65', 'wf_shipping_ups:70', 'wf_shipping_ups:74', 'free_shipping:2', 'request_shipping_quote');
由于我从 PluginHive 购买了“带有打印标签的 WooCommerce UPS 运输插件”,因此我可以访问他们的“管理运输方式”插件,该插件允许我执行以下操作:
设置多个规则以从各种运输类别中排除各种运输方式。在第一次出现时中断序列。
我设置的规则如下:
对于 150 类(首次出现时中断)- 未设置:
wf_shipping_ups:07、wf_shipping_ups:08、wf_shipping_ups:11、wf_shipping_ups:54、wf_shipping_ups:65、wf_shipping_ups:70、wf_shipping_ups:74、free_shipping:2、request_shipping_quote。
对于 151 类 - 未设置:flat_rate:20、flat_rate:21。
我在上面的代码中为我想要定位的产品创建了第三个类 182。仅当添加到购物车的该类别商品少于 5 件时,才应将其视为类别 151。
但如果购物车中添加 5 件或更多商品,则应将其视为 150 类。
这就是我的困境。
我想出了如何解决我的问题。如果购物车中的产品数量为 5 件或更多,@LoicTheAztec 帮助我的代码可以让我取消给定运输类别的运输方式。
我现在需要做的是取消设置其他两种运输方式(flat_rate:20 和 flat_rate:21),这两种运输方式会导致冲突,对于相同的运输类别(182),但这次购物车中的产品数量为 4 或更少( =<)。
然后我可以使用现有的插件来创建以下规则:
第一次出现时中断(检查)
对于 150 级 - 未设置:
wf_shipping_ups:07、wf_shipping_ups:08、wf_shipping_ups:11、wf_shipping_ups:54、wf_shipping_ups:65、wf_shipping_ups:70、wf_shipping_ups:74、free_shipping:2、request_shipping_quote。
对于 182 类 - 未设置:
没什么 - 因为两个代码都会创建逻辑
对于 151 类 - 未设置:
扁平率:20,扁平率:21。
这应该可以解决由插件引起的冲突。
百万美元的问题是......我可以以某种方式使用@LoicTheAztec 的解决方案来设置某种最小数量吗?
慕哥6287543