Купоны являются одним из самых эффективных инструментов увеличения продаж в интернет-магазине на WooCommerce. С их помощью можно предоставлять скидки, стимулировать повторные покупки, запускать рекламные акции, выдавать бонусы постоянным клиентам и автоматически применять специальные предложения. WooCommerce включает мощную систему управления купонами, а также предоставляет удобный PHP API для разработчиков. Благодаря этому можно не только создавать купоны вручную, но и автоматически генерировать их, применять программно, проверять условия использования и изменять правила начисления скидок. В этом руководстве рассмотрим все основные способы работы с купонами WooCommerce, а также приведем большое количество практических примеров.

Включение поддержки купонов

Если поле ввода купона отсутствует, необходимо включить поддержку купонов. Откройте:
  • WooCommerce → Настройки → Основные.
  • Включите пункт Использовать купоны.

Создание купона

В административной панели перейдите: Маркетинг → Купоны → Добавить купон Основные параметры:
  • код купона;
  • тип скидки;
  • размер скидки;
  • дата окончания;
  • минимальная сумма заказа;
  • максимальная сумма заказа;
  • ограничения по товарам;
  • ограничения по категориям.

Класс WC_Coupon

Практически вся работа с купонами выполняется через класс:
$coupon = new WC_Coupon('SALE10');

Получение объекта купона

$coupon = new WC_Coupon('SUMMER2026');

Получение ID купона

echo $coupon->get_id();

Получение названия

echo $coupon->get_code();

Размер скидки

echo $coupon->get_amount();

Тип скидки

echo $coupon->get_discount_type();
Возможные значения:
  • percent
  • fixed_cart
  • fixed_product

Автоматическое применение купона

Добавим купон при открытии корзины.
add_action( 'woocommerce_before_cart', function(){ $coupon='SALE10'; if( !WC()->cart->has_discount($coupon) ){ WC()->cart->apply_coupon($coupon); } });

Проверка применения

if( WC()->cart->has_discount('SALE10') ){ echo 'Купон уже активен'; }

Удаление купона

WC()->cart->remove_coupon('SALE10');

Удаление всех купонов

foreach( WC()->cart->get_applied_coupons() as $coupon){ WC()->cart->remove_coupon($coupon); }

Получение списка примененных купонов

$coupons= WC()->cart->get_applied_coupons(); print_r($coupons);

Создание купона программно

$coupon = new WC_Coupon(); $coupon->set_code('WELCOME'); $coupon->set_discount_type('percent'); $coupon->set_amount(10); $coupon->save();

Создание купона с фиксированной скидкой

$coupon = new WC_Coupon(); $coupon->set_code('SALE500'); $coupon->set_discount_type('fixed_cart'); $coupon->set_amount(500); $coupon->save();

Установка срока действия

$coupon->set_date_expires( new WC_DateTime( '2026-12-31' ) );

Минимальная сумма заказа

$coupon->set_minimum_amount(3000);

Максимальная сумма заказа

$coupon->set_maximum_amount(15000);

Запрет совместного использования

$coupon->set_individual_use(true);

Бесплатная доставка

$coupon->set_free_shipping(true);

Ограничение количества использований

$coupon->set_usage_limit(100);

Количество использований одним пользователем

$coupon->set_usage_limit_per_user(1);

Проверка существования купона

$coupon = new WC_Coupon('SALE10'); if($coupon->get_id()){ echo 'Купон найден'; }

Проверка срока действия

if( $coupon->get_date_expires() ){ echo 'Купон имеет срок действия'; }

Добавление купона только для авторизованных пользователей

if( is_user_logged_in() ){ WC()->cart->apply_coupon( 'VIP' ); }

Автоматический купон при сумме заказа

add_action( 'woocommerce_before_cart', function(){ if( WC()->cart->subtotal>10000 ){ WC()->cart->apply_coupon( 'BIGSALE' ); } });

Удаление купона при уменьшении суммы

if( WC()->cart->subtotal<10000 ){ WC()->cart->remove_coupon( 'BIGSALE' ); }

Проверка купона через фильтр

add_filter( 'woocommerce_coupon_is_valid', function($valid,$coupon){ if( date('N')==7 ){ return false; } return $valid; }, 10, 2 );
В данном примере купоны запрещены по воскресеньям.

Собственное сообщение об ошибке

add_filter( 'woocommerce_coupon_error', function($message){ return 'Данный купон сейчас недоступен.'; });

Проверка категории товара

if( has_term( 'sale', 'product_cat', $product_id ) ){ // логика }

Генерация случайного купона

$code='SALE-'. wp_generate_password( 8, false ); echo $code;

Получение скидки купона

echo WC()->cart->get_coupon_discount_amount( 'SALE10' );

Практические примеры

Купон для новых клиентов

if( get_current_user_id()==0 ){ WC()->cart->apply_coupon( 'NEWCLIENT' ); }

Купон в день рождения

if( date('m-d')=='05-15' ){ WC()->cart->apply_coupon( 'BIRTHDAY' ); }

Удаление купона после оформления

add_action( 'woocommerce_thankyou', function(){ foreach( WC()->cart->get_applied_coupons() as $coupon){ WC()->cart->remove_coupon($coupon); } });

Частые ошибки

Купон не применяется

  • проверьте код купона;
  • убедитесь, что он опубликован;
  • проверьте срок действия;
  • проверьте ограничения по товарам и категориям.

Автоматическое применение не работает

Используйте хуки после инициализации корзины, например woocommerce_before_cart или woocommerce_before_checkout_form.

Купон применяется несколько раз

Перед применением всегда проверяйте:
WC()->cart->has_discount();

Итог

  • Используйте класс WC_Coupon вместо прямой работы с базой данных.
  • Всегда проверяйте существование купона перед использованием.
  • Не применяйте купоны повторно — используйте has_discount().
  • Ограничивайте срок действия и количество использований.
  • Используйте автоматические купоны только при выполнении условий акции.
  • Проверяйте совместимость нескольких купонов.
  • Размещайте пользовательский код в дочерней теме или отдельном плагине.
Система купонов WooCommerce предоставляет широкие возможности для управления скидками и маркетинговыми акциями. С помощью класса WC_Coupon, методов объекта корзины и многочисленных хуков можно создавать купоны программно, автоматически применять их, ограничивать использование, проверять условия и изменять стандартную логику работы. Грамотное использование купонов помогает увеличить средний чек, повысить лояльность покупателей и автоматизировать проведение рекламных кампаний, сохраняя при этом полный контроль над процессом оформления заказа.

Метки: , ,