Automattic\WooCommerce\Api\Mutations\Coupons

UpdateCoupon::executepublicWC 1.0

Execute the mutation.

Метод класса: UpdateCoupon{}

Хуков нет.

Возвращает

Coupon.

Использование

$UpdateCoupon = new UpdateCoupon();
$UpdateCoupon->execute( #[Description( foo )] UpdateCouponInput $input,  ): Coupon;

[Description( foo )] UpdateCouponInput $input (обязательный)

: .

(обязательный)
.

Код UpdateCoupon::execute() WC 11.0.1

public function execute(
	#[Description( 'The fields to update.' )]
	UpdateCouponInput $input,
): Coupon {
	$wc_coupon = new \WC_Coupon( $input->id );

	if ( ! $wc_coupon->get_id() ) {
		throw new ApiException( 'Coupon not found.', 'NOT_FOUND', status_code: 404 );
	}

	foreach ( array( 'code', 'description', 'amount', 'date_expires', 'individual_use', 'product_ids', 'excluded_product_ids', 'usage_limit', 'usage_limit_per_user', 'limit_usage_to_x_items', 'free_shipping', 'product_categories', 'excluded_product_categories', 'exclude_sale_items', 'minimum_amount', 'maximum_amount', 'email_restrictions' ) as $field ) {
		if ( $input->was_provided( $field ) ) {
			$wc_coupon->{"set_{$field}"}( $input->$field );
		}
	}

	// Nullable enums: only invoke the setter when the client supplied a
	// non-null value. An explicit null means "ignore this field" here —
	// WC_Coupon's enum setters don't accept null and would fall back to
	// their defaults (e.g. 'fixed_cart' for discount_type), silently
	// overwriting whatever is already on the coupon.
	if ( $input->was_provided( 'discount_type' ) && null !== $input->discount_type ) {
		$wc_coupon->set_discount_type( $input->discount_type->value );
	}
	if ( $input->was_provided( 'status' ) && null !== $input->status ) {
		$wc_coupon->set_status( $input->status->value );
	}

	$wc_coupon->save();

	return CouponMapper::from_wc_coupon( $wc_coupon );
}