/ Плагины / Использование купонов

Использование купонов

HIT

15.10.2017

1844

В ранних публикациях связанных со скидками woocommerce кое где мельком упоминались купоны. Рассмотрим более подробно тему купонов woocommerce, ведь они являются мощным инструментом маркетинга интернет-магазина.

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

Чтобы использовать купоны — надо их включить: Woocommerce / Настройки / Платежи -> Включить использование купонов.

Название купона — это и есть сам купон, т.е. то что необходимо указать в поле.

Типы скидки:

  1. Процент скидки на весь заказ
  2. Сумма скидки на весь заказ
  3. Сумма скидки на определенный товар

Не совсем понятно, для чего нужен последний тип, т.к. первые два можно настроить на применение к конкретным товарам.

При создании купона во вкладке Ограничения можно задать:

  • Минимальная / максимальная сумма заказа для расчета скидки
  • Чтобы он не мог применяться с другими купонами
  • Не применять к товарам со статусом Распродажа
  • К каким товарам или категориям применяется скидка
  • Исключения товаров или категорий из расчета скидки
  • Исключения конкретных e-mail адресов

Было бы неплохо добавить выборку Воздействие / Исключения для меток товаров

Также можно выставить Лимиты использования: количество применений, количество товаров, количество применений одним клиентом.

В последней версии woocommerce 3.2 появилась возможность в заказах (в админке) применять купоны.

Массовая генерация купонов

Для того чтобы генерировать купоны не поштучно, а массово, нужно использовать дополнительный модуль (плагин).

Плагин Coupon Generator for WooCommerce (4000+) генерирует купоны легко и быстро. Генерация купонов разделена на 4 шага:

0. Введение. Здесь дается инструкция по работе с генератором.
1. Настройки купона. На этом шаге мы настраиваем свойства купонов: тип скидки, размер скидки, ограничения и лимиты.
2. Настройки генерации. Здесь всего один параметр — количество необходимых купонов.
3. Генерация купонов. На это шаге мы ничего не делаем, купоны начинают генерироваться автоматически.

Генерация купонов разделена на 4 шага

Минусом данного плагина можно назвать то, что в из админки нельзя настроить наименование купона маской. Плагин генерирует случайные комбинации вида: xtzn-fa0y-dwao, iscv-ujvq-mrwv, nwhd-ezo9-ad5l.

Функция генерации находиться в директории coupon-generator-for-woocommerce/includes/admin/wccg-core-functions.php, называется wccg_get_random_coupon(). Воздействием на эту функцию, можно примитивным образом изменить вид купона. Например, если убрать из переменной $charset буквы, то купон будет генерироваться из одних цифр. Или если в переменную $random_coupon вписать слово, то купоны будут начинаться с него. Только нужно учесть, что длина случайной комбинации увеличиться на количество символов в слове.

Множественные купоны для одноразового использования не рекомендуется генерировать простыми комбинациями, например SALE001, SALE002, SALE003 и т.д. Из-за того, что велика вероятность подбора таких купонов.

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

С помощью плагина WooCommerce Extended Coupon Features (20 000) можно автоматически (скрыто) применять купоны. Таким образом фактически можно создавать акции для определенных условий.

У данного плагина есть множество дополнительных функций связанных с расширением функционала купонов, особенно в Pro версии (29$ 03.07.2020).

  • Авто купоны: разрешить автоматическое добавление купонов в корзину пользователей, если соблюдены его ограничения
  • Применить купон через url-адрес
  • Ограничить купон по способу доставки
  • Ограничить купон по способу оплаты
  • Ограничить купон комбинацией продуктов
  • Ограничьте купон определенными ролями клиентов
  • (PRO) добавление бесплатных товаров в корзину клиента на основе правил купона
  • (PRO) разрешить применять скидку на корзину на основе количества / промежуточного итога соответствующих продуктов
  • (PRO) Установите автоматические приоритеты купонов (полезно только для индивидуального использования купонов)
  • (PRO) ограничить купон по зоне доставки
  • (ПРО) дают купон на первую покупку только
  • (PRO) API, позволяющий разработчикам использовать функции этого плагина

WooCommerce Coupon Exclusions

Еще один платный плагин (19$ 03.07.2020), его особенностью является отключение других купонов если применен определенный купон.

Функции автоматического применения купонов

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

add_action( 'woocommerce_before_cart', 'bbloomer_apply_coupon' );
  
function bbloomer_apply_coupon() {
    $coupon_code = 'freeweek'; 
    if ( WC()->cart->has_discount( $coupon_code ) ) return;
    WC()->cart->apply_coupon( $coupon_code );
    wc_print_notices();
}

Применить купон, если в корзине есть определенный товар

add_action( 'woocommerce_before_cart', 'bbloomer_apply_matched_coupons' );
  
function bbloomer_apply_matched_coupons() {
  
    $coupon_code = 'freeweek'; 
  
    if ( WC()->cart->has_discount( $coupon_code ) ) return;
  
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
  
    // this is your product ID
    $autocoupon = array( 745 );
  
    if ( in_array( $cart_item['product_id'], $autocoupon ) ) {   
        WC()->cart->apply_coupon( $coupon_code );
        wc_print_notices();
    }
  
    }
  
}

Глобально исключить товары и категории из расчета купонов

// Исключения из расчета купонов
class tula {

	//on class load set the following actions
	function __construct(){
		add_filter('woocommerce_coupon_is_valid_for_product', array($this, 'is_coupon_valid'), 100, 4);
		add_filter('woocommerce_coupon_get_discount_amount', array($this, 'coupon_amount'), 100, 5);

		$this->ignore_products = array(8158);
		$this->ignore_categories = array();
	}

	//filter function to check if product is valid
	function list_terms($product_id){
		$cats = array();
		$terms = get_the_terms($product_id, 'product_cat' );

		if($terms != false){
			foreach($terms as $term){
				$cats[] = $term->term_id;
			}
		}

		return $cats;
	}

	//check if term exists in ignore list
	function cat_exists($cats){
		$exists = false;
		foreach($cats as $cat){
			if (in_array($cat, $this->ignore_categories ) ){
				$exists = true;
			}
		}
		return $exists;
	}

	//validation
	function is_coupon_valid($valid, $product, $coupon, $values ){
		if (in_array($product->id, $this->ignore_products ) || $this->cat_exists($this->list_terms($product->id)) == true ){
			$valid = false;
		}
		return $valid;
	}

	//set the discount to 0 if the product id is in the exclusion list
	function coupon_amount($discount, $discounting_amount, $cart_item, $single, $coupon ){
		if (in_array($cart_item['product_id'], $this->ignore_products ) || $this->cat_exists($this->list_terms($cart_item['product_id'])) == true ){
			$discount = 0;
		}
		return $discount;
	}
}

new tula;

Еще одна полезная функция

// вывести уведомление при применении купона или при добавлении определенного товара
add_action( 'woocommerce_before_calculate_totals', 'auto_add_remove_coupon' );
function auto_add_remove_coupon( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    $coupon_code = 'pro40';
    $targeted_product_ids = array( 8158 );
    $found = false;

    // Loop through cart items
    foreach ( $cart->get_cart() as $cart_item ){
        if( in_array( $cart_item['product_id'], $targeted_product_ids ) ){
            $found = true;
            break;
        }
    }

    if ( ! $cart->has_discount( $coupon_code ) && $found ) {
        $cart->add_discount( $coupon_code );
        wc_clear_notices();
        wc_add_notice( __("Your custom notice - coupon added (optional)","woocommerce"), 'notice');
    } elseif  ( $cart->has_discount( $coupon_code ) && ! $found ) {
        $cart->remove_coupon( $coupon_code );
        wc_clear_notices();
        wc_add_notice( __("Your custom notice - coupon removed (optional)","woocommerce"), 'notice');
    }
	
}

Применение разных купонов в зависимости от других купонов и условий

Предположим, что у нас есть общий автоматический купон для зарегистрированных пользователей 10%, также есть ручной купон который дает скидку 40% на определенный товар. Но нам нужно сделать так чтобы на этот товар распространялась скидка не более 40%. Если у любой из скидок поставить индивидуальное использование, тогда автоматическая скидка перестанет действовать на другие товары.

В этом случае я придумал следующее, сделал ручную скидку на товар с 0 скидкой, и при ее применении в зависимости от условий применяю еще одну ручную скидку либо на 40% (для незарегистрированных), либо 30 % (для зарегистрированных пользователей).

// вывести уведомление при применении купона или при добавлении определенного товара
add_action( 'woocommerce_before_calculate_totals', 'auto_add_remove_coupon' );
function auto_add_remove_coupon( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;
	
	$coupon_code = 'СОЦОПРОС';
	
    if ( $cart->has_discount( $coupon_code ) ) {
		
		if (is_user_logged_in()) {
			if ( !$cart->has_discount( 'СОЦОПРОСUNREG' ) ) { $cart->remove_coupon( 'СОЦОПРОСUNREG' ); }
			if ( !$cart->has_discount( 'СОЦОПРОСREG' ) ) { $cart->add_discount( 'СОЦОПРОСREG' ); }
		} else {
			if ( !$cart->has_discount( 'СОЦОПРОСREG' ) ) { $cart->remove_coupon( 'СОЦОПРОСREG' ); }
			if ( !$cart->has_discount( 'СОЦОПРОСUNREG' ) ) { $cart->add_discount( 'СОЦОПРОСUNREG' ); }
    	}
		
	}
}

Можно изменить условие, вместо

if (is_user_logged_in()) {

прописать сам купон для зарегистрированных

if ( $cart->has_discount( 'logged' )  ) {

Научится динамически исключать конкретные товары из расчета конкретных купонов, в зависимости от каких-либо условий.

Очистить все примененные купоны

$cart->remove_coupons( $type );

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Быстрый просмотр товара

Быстрый просмотр товара

Продолжаем серию обзоров плагинов различного назначения для Woocommerce. В этот раз посмотрим на различные решения связанные с быстрым просмотром товара — Quick View. YITH WooCommerce Quick View (60 000) Плагин Читать далее »

/
Upgrade WC

Upgrade WC

Очередная серия улучшений (upgrade) плагина WC. Буду добавлять по мере изучения новые решения. Поиск по SKU (артикулу) Из коробки WC не ищет по артикулам (SKU). Но достаточно установить плагин Search Читать далее »

/
Шаблон вывода категорий woocommerce

Шаблон вывода категорий woocommerce

Зафиксировать шаблон (код) вывода категорий Woocommerce (я его назвал product-cat-list.php). Обычно я вывожу этот шаблон на стандартной странице /shop/ Шаблон вывода категорий Пересчет товаров во всех подкатегориях В шаблоне выше Читать далее »

Добавить комментарий

Пока нет комментариев. Будь первым!

Использование купонов Использование купонов
wp_list_categories
Рекомендации для васwp_list_categoriesOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.