Скидка на корзину по счету корзины и только для предметов, которые не продаются

В WooCommerce я хотел бы предоставить скидку 10% специально для тех продуктов, которые не продаются. Если количество товаров в корзине составляет 5 или более предметов, а не в продаже, тогда я даю скидку 10%.

Я использую следующий код, чтобы получить скидку на основе ограничения количества элементов корзины здесь:

add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees'); /** * Add custom fee if more than three article * @param WC_Cart $cart */ function add_custom_fees( WC_Cart $cart ){ if( $cart->cart_contents_count < 5 ){ return; } // Calculate the amount to reduce $discount = $cart->subtotal * 0.1; $cart->add_fee( '10% discount', -$discount); } 

Но я не знаю, как применять скидку только для предметов, которые не продаются. Как я могу это достичь?

Благодарю.

    Вот пользовательская функция, связанная с крючком, которая будет применяться к тележке с дисконтом , если в корзине есть 5 или более предметов и никаких продуктов в продаже:

      add_action('woocommerce_cart_calculate_fees' , 'custom_discount', 10, 1); function custom_discount( $cart_object ){ if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; // Only when there is 5 or more items in cart if( $cart_object->get_cart_contents_count() >= 5): // Initialising variable $is_on_sale = false; // Iterating through each item in cart foreach( $cart_object->get_cart() as $cart_item ){ // Getting an instance of the product object $_product = new WC_Product( $cart_item['product_id'] ); // If a cart item is on sale, $is_on_sale is true and we stop the loop if($_product->is_on_sale()){ $is_on_sale = true; break; } } ## Discount calculation ## $discount = $cart_object->subtotal * -0.1; ## Applied discount (no products on sale) ## if(!$is_on_sale ) $cart_object->add_fee( '10% discount', $discount); endif; } 

    Этот код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

    Этот код проверен и работает отлично.