Php 以编程方式从订阅/订单中删除优惠券

Php 以编程方式从订阅/订单中删除优惠券,php,woocommerce,Php,Woocommerce,如何以编程方式从订阅/订单中删除优惠券 这是我尝试过的,但当运行它时,它似乎没有删除优惠券,我哪里出了问题 $subscription = new WC_Subscription( $_REQUEST['sub_id'] ); $coupon_code = $_REQUEST['voucher_code']; $coupon = new WC_Coupon( $coupon_code ); $subscription->remove_coupon( $cou

如何以编程方式从订阅/订单中删除优惠券

这是我尝试过的,但当运行它时,它似乎没有删除优惠券,我哪里出了问题

    $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();

方法参数是优惠券代码,而不是对象

试试这个:

$subscription->remove_coupon( 'coupon_code' );
其中
优惠券\u code
是客户应用于购物车或结帐的优惠券的名称


您可以在这里找到文档:

我找到了一种解决方法,我只需要在每张优惠券上循环:

      $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() );
        }
      }

我想如果我是通过购物车或结帐来做这件事的话,那就行了,但我是在我的帐户部分以编程方式做这件事的,我只想通过自定义表单来添加/删除它<代码>删除优惠券似乎是一个购物车/结账功能,就像
应用优惠券
(另一种选择是
添加优惠券
)这是
WC\u抽象订单
类的一种方法。而这:是
WC\u Cart
类的一种方法。两者都需要优惠券代码(而不是对象实例)作为参数。