问题描述
在Woocommerce商店中,有3种运输选项
- 免费送货
- 统一费率
- 领取
受Free shipping depending on weight and on minimal cart amount的启发,我希望在选择送货方式时要求购物车的总重量最小。
- 如果客户订购的重量不超过24千克,则只能提货。
- 如果购物车的总重量在25kg至49kg之间,则只能在固定费用方式或皮卡车之间选择。
- 如果购物车的总重量为50公斤或以上,他们可以选择免费送货和取货。
在互联网上,我找到了WooCommerce: How to Setup Tiered Shipping Rates by Order Amount,我对其进行了自定义以使其在商店中正常工作,因为我们有2个运输区域(因此有多个固定费率,本地取货等)。
不幸的是,它不能满足我的需求,尽管我认为代码是正确的?任何帮助将不胜感激。
add_filter( 'woocommerce_package_rates','bbloomer_woocommerce_tiered_shipping',9999,2 );
function bbloomer_woocommerce_tiered_shipping( $rates,$package ) {
if ( WC()->cart->get_cart_contents_weight() < 25 ) {
if ( isset( $rates['local_pickup:5'],$rates['local_pickup:9'] ) ) unset( $rates['flat_rate:3'],$rates['flat_rate:6'],$rates['free_shipping:1'],$rates['free_shipping:8'] );
} elseif ( WC()->cart->get_cart_contents_weight() < 50 ) {
if ( isset( $rates['flat_rate:3'],$rates['local_pickup:5'],$rates['local_pickup:9'] ) ) unset( $rates['free_shipping:1'],$rates['free_shipping:8'] );
} else {
if ( isset( $rates['free_shipping:1'],$rates['free_shipping:8'],$rates['flat_rate:6'] );
}
return $rates;
}
解决方法
注意:您不能以应用方式将multiple conditions添加到if条件。
将要在特定条件下保留的运输选项添加到 protected override void OnAppearing()
{
base.OnAppearing();
SetButtonAccordingToPosition();
}
阵列
- 当客户订购24公斤或更少的货物时=当地取货
- 如果购物车总重量在25kg至49kg之间=本地取货和统一费用
- 如果购物车总重量为50公斤或以上=当地取件并免费送货
$available_shipping