WC_Abstract_Order::remove_coupon()publicWC 3.2.0

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{}

Хуков нет.


null. Ничего.


$WC_Abstract_Order = new WC_Abstract_Order();
$WC_Abstract_Order->remove_coupon( $code );
$code(строка) (обязательный)
Coupon code.

Список изменений

С версии 3.2.0 Введена.

Код WC_Abstract_Order::remove_coupon() WC 6.9.4

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