Процентная скидка только для промежуточных товаров, не находящихся в продаже в Woocommerce

Есть отличный ответ для скидки, основанной на количестве товаров, не находящихся в продаже, но если в списке есть один товар, который не продается, он не работает для всех остальных товаров, которых нет в продаже. -продажа предметов...

Мой вопрос: как я могу сделать скидку только на «товары не в продаже», когда у меня есть «товары в продаже» в том же списке корзины?


person Arie B    schedule 10.04.2018    source источник


Ответы (1)


Обновлено. Попробуйте вместо этого:

add_action('woocommerce_cart_calculate_fees' , 'custom_cart_discount', 20, 1);
function custom_cart_discount( $cart ){

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Limitations: Only when there is 5 or more non on sale items in cart
    $starting_limit = 5;

    // Initialising variables
    $not_on_sale_subtotal = $discount = $items_count = 0;

    // Iterating through each item in cart
    foreach( $cart->get_cart() as $cart_item ){

        // For cart items is not on sale
        if( ! $cart_item['data']->is_on_sale() ){
            $not_on_sale_subtotal += (float) $cart_item['line_subtotal'];
            $items_count += $cart_item['quantity'];
        }
    }

    // Discount calculation
    $discount = $not_on_sale_subtotal * 0.1;

    // Applied discount only cart items that are not on sale
    if( $discount && $items_count >= $starting_limit )
        $cart->add_fee( 'Special discount', -$discount );

}

Код находится в файле function.php вашей активной дочерней темы (или активной темы). Должен работать

person LoicTheAztec    schedule 10.04.2018
comment
спасибо, но это не работает, страница корзины белая, сейчас я проверяю (с моими ограниченными возможностями программного обеспечения) это - person Arie B; 10.04.2018