WC_API_Orders::set_coupon( WC_Order $order, array $coupon, string $action )
Create or update an order coupon
Description Description
Parameters Parameters
- $order
-
(Required)
- $coupon
-
(Required) item data
- $action
-
(Required) 'create' to add coupon or 'update' to update it
Source Source
File: includes/legacy/api/v2/class-wc-api-orders.php
protected function set_coupon( $order, $coupon, $action ) { // coupon amount must be positive float if ( isset( $coupon['amount'] ) && floatval( $coupon['amount'] ) < 0 ) { throw new WC_API_Exception( 'woocommerce_invalid_coupon_total', __( 'Coupon discount total must be a positive amount.', 'woocommerce' ), 400 ); } if ( 'create' === $action ) { // coupon code is required if ( empty( $coupon['code'] ) ) { throw new WC_API_Exception( 'woocommerce_invalid_coupon_coupon', __( 'Coupon code is required.', 'woocommerce' ), 400 ); } $item = new WC_Order_Item_Coupon(); $item->set_props( array( 'code' => $coupon['code'], 'discount' => isset( $coupon['amount'] ) ? floatval( $coupon['amount'] ) : 0, 'discount_tax' => 0, 'order_id' => $order->get_id(), ) ); $order->add_item( $item ); } else { $item = new WC_Order_Item_Coupon( $coupon['id'] ); if ( isset( $coupon['code'] ) ) { $item->set_code( $coupon['code'] ); } if ( isset( $coupon['amount'] ) ) { $item->set_discount( floatval( $coupon['amount'] ) ); } $coupon_id = $item->save(); if ( ! $coupon_id ) { throw new WC_API_Exception( 'woocommerce_cannot_update_order_coupon', __( 'Cannot update coupon, try again.', 'woocommerce' ), 500 ); } } }
Changelog Changelog
Version | Description |
---|---|
2.2 | Introduced. |