/ Адаптивность / Скидка за первый заказ

Скидка за первый заказ

Опишу механику скидки за первый заказ. Скидку можно давать только зарегистрированным пользователям, либо также и не зарегистрированным.

С зарегистрированными понятно. Благодаря плагину WooCommerce Extended Coupon Features FREE (30 000) ставим роль Customer и лимит на одного пользователя. Минусом данного способа является то что пользователю нужно сначала зарегистрироваться или авторизоваться.

Для того чтобы купон срабатывал автоматически, без введения, в настройках плагина WooCommerce Extended Coupon Features FREE (Miscellaneous) нужно включить Auto coupon.

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

Разрешаем регистрацию и авторизацию при оформлении заказа:

Делаем регистрацию принудительной:

jQuery('#createaccount').attr('checked',true);

И скрываем чекбокс «Хотите зарегистрироваться?»:

.woocommerce-account-fields {display: none;}

После оформления заказа пользователю на указанный e-mail помимо заказа придет письмо о регистрации на сайте (с автоматическими логином и паролем). Если пользователь выйдет из учетки и захочет еще раз совершить заказ, то при вводе той же почты ему выведется уведомление «Пользователь с таким e-mail уже существует», а т.к. тут же в Оформлении выведена форма для авторизации, пользователь должен либо ввести новую почту, либо авторизоваться.

Конечно пользователь может ввести фейковую почту. Но в этом случае он не получит на нее заказ.

Также пользователь может использовать свои несколько почтовых ящиков, но это он может сделать и при скидке только для зарегистрированных пользователей (для создания нескольких учеток).

Всплывающее окно «Скидка за первый заказ»

Для того чтобы определить первый ли заказ у пользователя делаем функцию:

function get_user_orders_total($user_id) {
    // Use other args to filter more
    $args = array(
        'customer_id' => $user_id,
	'posts_per_page' => -1
    );
    // call WC API
    $orders = wc_get_orders($args);

	
    if (empty($orders) || !is_array($orders)) {
        return false;
    }
	
	// Количество заказов
	if ($user_id == 0) {
        $total = 0;
    } else {
		$total = count($orders);
	}
	
	// Сумма всех заказов
	/*$total = array_reduce($orders, function ($carry, $order) {
		$carry += (float)$order->get_total();

		return $carry;
	}, 0.0);*/

    return $total;
}

Далее с помощью этой функции создаем условие:

$cur_user_id = get_current_user_id();
if ( !get_user_orders_total($cur_user_id) >= 1 ) {
	
	//Выводим функционал всплывающего окна
	
}

Если есть или планируется подключение к Яндекс Маркету скрипт вывода окна также нужно подредактировать, чтобы не выводить окно в шаблонах карточки товара, корзине и в оформлении. ЯМ этого не любит и выдаст претензию к качеству.

jQuery(document).ready(function() {
	
	if(!location.href.match(/cart/) && !location.href.match(/product\//) && !location.href.match(/checkout/)) {
	
		//скрипт вывода всплывающего окна
		
	}
	
});
Если в условии location.href.match прописать /product/, то скрипт не будет срабатывать и в категории, т.к. в их url содержится product в префиксе category-product. А \/ добавляет в переменную экранированный слэш.

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

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

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

Скидка за первый заказ Скидка за первый заказ
Модификация Woocommerce
Рекомендации для васМодификация WoocommerceOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.