WC_Abstract_Order::remove_coupon()
Remove a coupon from the order and recalculate totals.
Coupons affect line item totals, but there is no relationship between coupon and line total, so to remove a coupon we need to work from the line subtotal (price before discount) and re-apply all coupons in this order.
Manual discounts are not affected; those are separate and do not affect stored line totals.
Метод класса: WC_Abstract_Order{}
Хуков нет.
Возвращает
true|false
. TRUE if coupon was removed, FALSE otherwise.
Использование
$WC_Abstract_Order = new WC_Abstract_Order(); $WC_Abstract_Order->remove_coupon( $code );
- $code(строка) (обязательный)
- Coupon code.
Список изменений
С версии 3.2.0 | Введена. |
С версии 7.6.0 | Returns a boolean indicating success. |
Код WC_Abstract_Order::remove_coupon() WC Abstract Order::remove coupon WC 9.7.1
public function remove_coupon( $code ) { $coupons = $this->get_items( 'coupon' ); // Remove the coupon line. foreach ( $coupons as $item_id => $coupon ) { if ( $coupon->get_code() === $code ) { $this->remove_item( $item_id ); $coupon_object = new WC_Coupon( $code ); $coupon_object->decrease_usage_count( $this->get_user_id() ); $this->recalculate_coupons(); return true; } } return false; }