Как сделать оптовую скидку на конкретный товар в WooCommerce без плагинов!

от Михаил | Мар 15, 2026 | Уроки

Часто клиенты просят сделать простую акцию: «Купи 2 штуки и получи скидку 20%». Ставить для этого тяжелые плагины со сложными правилами ценообразования — значит лишний раз нагружать сайт.

Эту задачу можно красиво решить всего одной функцией! Делюсь готовым PHP-сниппетом, который автоматически добавит скидку в корзину, если покупатель берет нужное количество определенного товара.

add_action('woocommerce_cart_calculate_fees', 'add_bulk_discount_for_product');
function add_bulk_discount_for_product() {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

    // --- НАСТРОЙКИ ---
    $target_product_id = 56544; // Ваш ID товара
    $discount_percent = 20;     // Размер скидки в процентах (20%)
    $min_quantity = 2;          // Минимальное количество для активации скидки
    // -----------------

    $target_count = 0;
    $target_total_price = 0;
    
    // Проверяем, существует ли объект корзины
    if ( ! WC()->cart ) return;

    // Перебираем товары в корзине
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        // Проверяем совпадение по ID товара (и на всякий случай по ID вариации)
        if ( in_array( $target_product_id, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {
            $target_count += $cart_item['quantity'];
            // Суммируем базовую стоимость только этих товаров
            $target_total_price += $cart_item['line_subtotal'];
        }
    }

    // Если набралось нужное количество
    if ( $target_count >= $min_quantity ) {
        // Считаем скидку от итоговой суммы целевых товаров
        $total_discount = -1 * ( $target_total_price * ( $discount_percent / 100 ) );

        $fee_name = sprintf( 'Скидка %d%% при покупке от %d шт.', $discount_percent, $min_quantity );
        
        // Применяем скидку в виде комиссии в корзине
        WC()->cart->add_fee( $fee_name, $total_discount, true );
    }
}

⚙️ Как настроить под себя?

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

$target_product_id — замените 56544 на ID товара, который участвует в вашей акции.

$discount_percent — укажите нужный процент скидки (например, 10, 15 или 50).

$min_quantity — укажите, от скольких штук в корзине акция начнет работать.

📁 Куда вставлять код?

Скопируйте этот код и добавьте его в файл functions.php вашей дочерней темы. А еще лучше — используйте плагины вроде Code Snippets или WPCode, чтобы код не пропал при обновлении темы.

Было полезно?

Пожалуйста, расскажите об этом друзьям!

VK
Pinterest
OK
Telegram
Linkedin
WhatsApp
Viber
Reddit

* Meta / Facebook — сервисы, предоставляемые организацией, признанной экстремистской

Готовы получать больше клиентов?

Ваш сайт может быть не просто визиткой, а полноценным инструментом продаж — работать 24/7, привлекать заявки и усиливать доверие к вашему бизнесу. Оставьте заявку — и мы подскажем, какое решение подойдёт именно вам.

Вам может быть интересно

Telegram Почта info@pureseo.ru Телефон +7 (903) 757-15-01