Часто клиенты просят сделать простую акцию: «Купи 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, чтобы код не пропал при обновлении темы.
