woocommerce初始化运输方式,添加到费率

时间:2018-03-05 10:00:42

标签: php wordpress woocommerce

在Woocommerce中我有以下情况:100美元之前有送货方式,100美元之后只有一个(free shipping)可用。因此,当客户购买product 102$然后apply the (10%) promo code时,价格将为91,80美元。由于我在100美元后取消了运费方式并且免费送货显示为after 100$ only,因此客户显示:“没有shipping methods可用...”

    add_filter( 'woocommerce_package_rates', 'woocommerce_hide_shipping', 10, 2 );
function woocommerce_hide_shipping( $rates, $package ) {

  $threshold = 100;

if ( WC()->cart->subtotal >= $threshold ) {
    unset( $rates['flat_rate:45'] );
    unset( $rates['flat_rate:75'] );
}
if ( WC()->cart->subtotal >= $threshold && !empty(WC()->cart->applied_coupons) ) {
     //code here
}

  return $rates;

}

如果促销代码和优惠券之前的price was >100$可以显示免费送货吗?我设置免费送货以显示最低订单amount (100$),但有一种方法可以显示,初始化?其他方法也受到欢迎。

1 个答案:

答案 0 :(得分:1)

问题是......你申请的免费送货是以最小订单为界,这是指订单总额(非小计)..... 小计为您提供无折扣的价值。

所以,

从管理员设置中删除条件(最小订单总数) - 免费送货....现在它适用于每个订单...

然后修改你的代码---

add_filter( 'woocommerce_package_rates', 'woocommerce_hide_shipping', 10, 2 );
function woocommerce_hide_shipping( $rates, $package ) {

  $threshold = 100;

 if ( WC()->cart->subtotal >= $threshold ) {
    unset( $rates['flat_rate:45'] );
    unset( $rates['flat_rate:75'] );
}
if ( WC()->cart->subtotal < $threshold ) {
     //code here
     unset( $rates['free_shipping:45'] );
     unset( $rates['free_shipping:75'] );
}

  return $rates;

}