Woocommerce基于购物车小计添加优惠券



我正在尝试根据购物车小计自动添加三张优惠券中的一张到购物车中(250美元或更多;150 - 249.99;和75 - 149.99)。这就是我所拥有的,但是当您更新购物车中的商品数量时,它会使购物车旋转。当一个额外的新项目被添加到购物车或当一个项目在购物车中被删除时,它似乎工作。然而,当我增加一件商品的数量以从最小折扣移动到中等折扣时,购物车页面根本没有加载(它是空白的)。它仍然是空白的,即使我去添加一个新的产品到购物车。我必须注释掉这个动作才能让它载入购物车。

我很感激你的帮助。


This works, except that when the cart is updated, it just spins.  If you refresh, the correct discount displays (and the item count that was changed was updated.)  Any idea why it would just spin like this?
add_action( 'woocommerce_before_calculate_totals', 'sbs_auto_add_coupons_total_based', 10, 1 );
function sbs_auto_add_coupons_total_based( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
$coupon_15 = 'dicount15'; 
$coupon_10 = 'discount10';
$coupon_5 = 'discount5';
$applied_coupons = $cart->get_applied_coupons();
$subtotal = 0;
foreach( $cart->get_cart() as $cart_item ) {
$subtotal += $cart_item['line_subtotal'];
}

if( $subtotal >= 250 && ! in_array($coupon_15, $applied_coupons ) ){

if( in_array($coupon_10, $applied_coupons ) )
$cart->remove_coupon( $coupon_10 );
if( in_array($coupon_5, $applied_coupons ) )
$cart->remove_discount($coupon_5); 
$cart->add_discount( $coupon_15 );
}
elseif( $subtotal >= 150 && ! in_array($coupon_10, $applied_coupons ) ) {
if( in_array($coupon_15, $applied_coupons ) )
$cart->remove_coupon( $coupon_15 );
if( in_array($coupon_5, $applied_coupons ) )
$cart->remove_discount($coupon_5);
$cart->add_discount( $coupon_15 );
}

elseif( $subtotal >= 75 && ! in_array($coupon_5, $applied_coupons ) ) {
if( in_array($coupon_15, $applied_coupons ) )
$cart->remove_coupon( $coupon_15 );
if( in_array($coupon_10, $applied_coupons ) )
$cart->remove_discount($coupon_10);
$cart->add_discount( $coupon_5 );
}

else {
if( in_array($coupon_15, $applied_coupons ) )
$cart->remove_coupon( $coupon_15 );
if( in_array($coupon_10, $applied_coupons ) )
$cart->remove_discount($coupon_10);
if( in_array($coupon_5, applied_coupons ) )
$cart->remove_discount($coupon_5);
}

}
<代码>

/**基于购物车小计添加优惠券*/

PP_3

最新更新