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

Как сделать оптовую скидку на конкретный товар в 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

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

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

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

Telegram Почта Телефон