WC_Discounts::validate_coupon_excluded_itemsprotectedWC 3.2.0

All exclusion rules must pass at the same time for a product coupon to be valid.

Method of the class: WC_Discounts{}

No Hooks.

Returns

true|false.

Usage

// protected - for code of main (parent) or child class
$result = $this->validate_coupon_excluded_items( $coupon );
$coupon(WC_Coupon) (required)
Coupon data.

Changelog

Since 3.2.0 Introduced.

WC_Discounts::validate_coupon_excluded_items() code WC 10.6.2

protected function validate_coupon_excluded_items( $coupon ) {
	$items = $this->get_items_to_validate();
	if ( ! empty( $items ) && $coupon->is_type( wc_get_product_coupon_types() ) ) {
		$valid = false;

		foreach ( $items as $item ) {
			if ( $item->product && $coupon->is_valid_for_product( $item->product, $item->object ) ) {
				$valid = true;
				break;
			}
		}

		if ( ! $valid ) {
			throw new Exception(
				sprintf(
					/* translators: %s: coupon code */
					esc_html__( 'Sorry, coupon "%s" is not applicable to selected products.', 'woocommerce' ),
					esc_html( $coupon->get_code() )
				),
				109
			);
		}
	}

	return true;
}