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

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

HIT

15.10.2017

4214

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

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

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

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

Типы скидки:

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

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

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

  • Минимальная / максимальная сумма заказа для расчета скидки
  • Чтобы он не мог применяться с другими купонами
  • Не применять к товарам со статусом Распродажа
  • К каким товарам или категориям применяется скидка
  • Исключения товаров или категорий из расчета скидки
  • Исключения конкретных 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 );
[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Связывание товаров

Связывание товаров

Если товары продаются несколькими частями, но части нужно связать чтобы одну без другой нельзя было приобрести, можно связать такие товары. Как вариант такие товары можно заводить как один товар (в Читать далее »

Удалить дубли товаров

Удалить дубли товаров

Если по каким-либо причинам (например неправильного импорта) в базе существуют дубли товаров. Дубли будем определять исключительно по наименованию (title). Готового решения (плагина) по данной теме не нашёл. Создаём шаблон страницы Читать далее »

Metabox woocommerce

Metabox woocommerce

У плагина woocommerce есть набор дополнительных полей при редактировании товара. При необходимости можно в группы полей WC добавить свои произвольные metabox. Должно получится так: Создание и отображение metabox Первый экшн Читать далее »

/

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

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

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