WooCommerce: автоматическое добавление скидок по купонам при оформлении заказа

Диагностика задачи: зачем автоматически добавлять купоны в WooCommerce

Часто в интернет-магазинах на WooCommerce требуется, чтобы при определённых условиях (например, первый заказ, сумма корзины, категория товара) автоматически применялся купон со скидкой. Это повышает конверсию и упрощает процесс оформления для покупателя. По умолчанию WooCommerce не добавляет купоны автоматически, их нужно вводить вручную.

Основная задача — автоматически применить купон при загрузке страницы корзины или оформления заказа, при этом проверяя заданные условия.

Пошаговое решение: как добавить купон программно

1. Создайте купон в админке WooCommerce

Перейдите в WooCommerce → Купоны и создайте новый купон, например, FIRSTORDER10 со скидкой 10% или фиксированной суммой.

2. Добавьте код в functions.php вашей темы или в кастомный плагин

Ниже пример кода, который автоматически применяет купон FIRSTORDER10 при первом заказе пользователя с суммой корзины больше 1000 рублей:

add_action('woocommerce_before_cart', 'auto_apply_coupon_first_order');
add_action('woocommerce_before_checkout_form', 'auto_apply_coupon_first_order');

function auto_apply_coupon_first_order() {
    if ( is_admin() ) return;

    if ( ! is_user_logged_in() ) return; // только для зарегистрированных

    $user_id = get_current_user_id();
    $used_orders = wc_get_orders(array(
        'customer_id' => $user_id,
        'limit' => 1,
        'return' => 'ids',
    ));

    if ( ! empty($used_orders) ) {
        // Пользователь уже делал заказ
        return;
    }

    $coupon_code = 'FIRSTORDER10';

    if ( WC()->cart->has_discount( $coupon_code ) ) {
        return; // Купон уже применён
    }

    $cart_total = WC()->cart->subtotal;
    if ( $cart_total < 1000 ) {
        return; // Не достигает порога
    }

    WC()->cart->apply_coupon( $coupon_code );
    wc_print_notices();
}

3. Объяснение кода

  • Хуки woocommerce_before_cart и woocommerce_before_checkout_form вызывают функцию до вывода страницы корзины и оформления.
  • Проверяем, что пользователь залогинен и у него нет предыдущих заказов.
  • Проверяем, что сумма корзины превышает 1000.
  • Если купон ещё не применён, добавляем его через WC()->cart->apply_coupon().
  • Выводим системные уведомления о применении купона.

Проверка результата после внедрения

  1. Залогиньтесь под тестовым пользователем без заказов.
  2. Добавьте товары на сумму больше 1000 в корзину.
  3. Перейдите в корзину или оформление заказа — купон должен автоматически примениться и показаться в списке скидок.
  4. Если сумма меньше 1000, купон не применяется.
  5. Если пользователь уже делал заказ, купон не применяется.

Частые ошибки и как их исправить

  • Купон не применяется: проверьте, что код купона точный, и что он активен в админке WooCommerce.
  • Купон применяется, но скидка не видна: убедитесь, что в настройках купона нет ограничений, например, по продуктам, которые не в корзине.
  • Ошибка сессии или куков: очистите кэш браузера, отключите кэш-плагины, которые могут мешать обновлению корзины.
  • Купон применяется многократно: код проверяет, есть ли купон в корзине, но если вы используете AJAX в теме, убедитесь, что функция вызывается корректно.

Практические советы по безопасности и производительности

  • Не храните чувствительные данные в пользовательских метаполях без необходимости.
  • Проверяйте условия применения купонов только при необходимости, избегайте лишних запросов к базе (например, ограничьте проверку заказов лимитом 1).
  • Используйте nonce и проверки прав пользователя при расширении функционала.
  • Если много условий — рассмотрите вынесение логики в отдельные классы или сервисы.

Альтернативы: плагин vs код vs компромисс

ВариантПлюсыМинусы
Плагин автоматического применения купоновПростота установки, GUI для условийМожет влиять на производительность, лишний код, лицензии
Код в functions.phpЛёгкий, кастомный, без лишних зависимостейТребует знаний PHP, нельзя быстро изменить условия без редактирования кода
Компромисс: кастомный плагин с настройкамиУправляемость + контроль над кодомДополнительная разработка и поддержка
Оценка эффективности плагинов WordPress: как выбрать и проверить
05.02.2026
Как создать автоматический импорт продуктов в WooCommerce
16.02.2026
WooCommerce: автоматическое изменение ставки НДС для разных типов товаров
23.06.2026
Автоматическое отключение неиспользуемых активных плагинов WordPress: практическое решение
11.03.2026
WooCommerce: автоматическое добавление скидок по купонам при оформлении заказа
08.07.2026