WC_API_Orders::set_coupon() protected WC 2.2
Create or update an order coupon
{} Это метод класса: WC_API_Orders{}
Хуков нет.
Возвращает
Null. Ничего.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->set_coupon( $order, $coupon, $action );
- $order(\WC_Order) (обязательный)
- -
- $coupon(массив) (обязательный)
- item data
- $action(строка) (обязательный)
- 'create' to add coupon or 'update' to update it
Список изменений
С версии 2.2 | Введена. |
Код WC_API_Orders::set_coupon() WC API Orders::set coupon WC 5.0.0
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 );
}
}
}