如何以编程方式从订阅/订单中删除优惠券?
这是我试过的,但是运行的时候好像没有去掉优惠券,我哪里错了?
$subscription = new WC_Subscription( $_REQUEST['sub_id'] );
$coupon_code = $_REQUEST['voucher_code'];
$coupon = new WC_Coupon( $coupon_code );
$subscription->remove_coupon( $coupon );
另一方面是添加了一张效果很好的优惠券:
$subscription->add_coupon( $coupon_code,$coupon_amount,'0' );
$subscription->set_total( $subscription->get_total() - $coupon_amount );
$subscription->save();
答案 0 :(得分:1)
remove_coupon
方法参数是优惠券代码,而不是对象。
试试这个:
$subscription->remove_coupon( 'coupon_code' );
其中 coupon_code
是客户应用于购物车或结帐的优惠券名称。
答案 1 :(得分:1)
我找到了解决这个问题的方法,我只需要遍历每张优惠券:
$coupons = $subscription->get_items( 'coupon' );
// Remove the coupon line.
$strcode = strtolower($coupon_code);
foreach ( $coupons as $coupon ) {
if($coupon->get_code() == $strcode){
$subscription->remove_coupon( $coupon->get_code() );
}
}