我一直在搜索,但我找不到如何以程序方式删除woocommerce优惠券。
我正在尝试根据购物车总数制作折扣。我需要申请删除优惠券,因为如果你有价值1000欧元的产品(15%优惠券适用)并且删除产品并且只留下价值50欧元的产品,你仍然可以享受15%的折扣,因为我的代码没有删除已经申请的优惠券
所以这是我现在的代码:
add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );
function apply_matched_coupons() {
global $woocommerce;
$coupon_code5 = '5p'; // your coupon code here
$coupon_code10 = '10p'; // your coupon code here
$coupon_code15 = '15p'; // your coupon code here
$coupon_code20 = '20p'; // your coupon code here
$coupon_code25 = '25p'; // your coupon code here
if ( $woocommerce->cart->has_discount( $coupon_code ) ){
return;
}
if ( $woocommerce->cart->cart_contents_total >= 4000 ) {
$woocommerce->cart->add_discount( $coupon_code25 );
$woocommerce->show_messages();
}
else if ( $woocommerce->cart->cart_contents_total >= 2000 ) {
$woocommerce->cart->add_discount( $coupon_code20 );
$woocommerce->show_messages();
}
else if ( $woocommerce->cart->cart_contents_total >= 1000 ) {
$woocommerce->cart->add_discount( $coupon_code15 );
$woocommerce->show_messages();
}
else if ( $woocommerce->cart->cart_contents_total >= 500 ) {
$woocommerce->cart->add_discount( $coupon_code10 );
$woocommerce->show_messages();
}
else if ( $woocommerce->cart->cart_contents_total >= 200 ) {
$woocommerce->cart->add_discount( $coupon_code5 );
$woocommerce->show_messages();
}
}
答案 0 :(得分:5)
要使用优惠券代码从购物车中删除单张优惠券,请使用WC_Cart->remove_coupon( $code )
。
要从购物车中删除所有优惠券,您可以使用WC_Cart->remove_coupons( $type )
- $type
默认为null
,传入"购物车"删除税前优惠券,"订单"税后优惠券。
要将购物车中的所有优惠券array
作为for ( WC()->cart->get_coupons as $code => $coupon ){
$valid = ? // decide to remove or not
if ( ! $valid ){
WC()->cart->remove_coupon( $code );
}
}
进行循环播放并可选择删除,请使用WC_Cart->get_coupons()
。
{{1}}
答案 1 :(得分:5)
购物车方法remove_coupons()已更新,因此不再需要类型。现在,要删除所有优惠券,这将解决问题:
WC()->cart->remove_coupons();
有关更多信息,请查看WC_Cart课程here的文档。