Проработаем функционал по отправке купона на следующий заказ. Дополнительные условия:
- Купон должен отправлять только при наличии в текущем заказе товара из определенной категории
- Номинал купона либо 30% если сумма следующей покупки менее 3300 руб., либо 1000 руб. если сумма покупки более 3300 руб.
- Купоны должны быть полностью одноразовыми, т.е. генерироваться индивидуально для каждого заказа, например: WB-14gf78, WB-dfgf34, и т.д.
Готовые решения
Плагин WooCommerce Next Order Coupon (100+) отправляет одноразовый (для одного пользователя) купон. В настройках можно вписать название купона (по умолчанию WELCOMEBACK) и выбрать 2 варианта скидки 5% или 10%.
В письме о текущем заказе появляется следующее уведомление.
Retainful — WooCommerce Cart Abandonment Recovery and Next Order Coupons (3000) в данном плагине совмещены функционал купона на следующий заказ и заброшенные корзины. Настроек для купона на следующий заказ побольше чем в предыдущем решении, в т.ч. по части самого купона.
Отправка купона без плагина
Создаем одноразовый (для одного пользователя) купон WELCOMBACK с необходимыми условиями.
Добавляем в письмо клиента о заказе информацию о купоне, только при наличии в заказе позиций из определенных категорий:
// Добавить в шаблон письма об успешном заказе инфу о купоне на следующую покупку
add_filter( 'woocommerce_email_after_order_table', 'next_order_message', 10, 2 );
function next_order_message($order) {
foreach ( $order->get_items() as $item_id => $item ) {
$product_cat_ids[] = wp_get_post_terms( $item->get_product_id(), 'product_cat', array('fields' => 'ids') );
}
$product_cat_ids = array_merge(...$product_cat_ids);
$control_cats = array(139,874,2011,2012,2013,2014,2015); // отправлять только при наличии в заказе позиций из этих категорий
if ( count(array_intersect( $control_cats, $product_cat_ids )) > 0 ) {
echo '
<div style="background: #0093d2; padding: 20px 30px 5px; margin-bottom: 15px; color: #fff; border-radius: 3px;">
<h2 style="font-size: 24px; color: #fff;">Скидка 30% на следующий заказ</h2>
<p>Возвращайтесь за новыми покупками! Мы дарим вам купон на следующий заказ от 3300 руб.: <strong>WELCOMEBACK</strong></p>
</div>
';
}
}
Если нужно вывести эту же информацию в шаблоне успешного заказа, с благодарностью о покупке, то в шаблоне woocommerce/checkout/thankyou.php в нужном месте нужно добавить action:
<?php do_action( 'next_order_message_in_current_order', $order->get_id() ); ?>
И к нему в functions.php привязать аналогичную функцию:
add_action('next_order_message_in_current_order', 'next_order_message_site' );
function next_order_message_site($order_id) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item_id => $item ) {
$product_cat_ids[] = wp_get_post_terms( $item->get_product_id(), 'product_cat', array('fields' => 'ids') );
}
$product_cat_ids = array_merge(...$product_cat_ids);
$control_cats = array(139,874,2011,2012,2013,2014,2015); // показывать только при наличии в заказе позиций из этих категорий
if ( count(array_intersect( $control_cats, $product_cat_ids )) > 0 ) {
echo '
<div style="background: #0093d2; padding: 20px 30px 5px; margin-bottom: 15px; color: #fff; border-radius: 3px;">
<h2 style="font-size: 24px; color: #fff;">Скидка 30% на следующий заказ</h2>
<p>Возвращайтесь за новыми покупками! Мы дарим вам купон на следующий заказ от 3300 руб.: <strong>WELCOMEBACK</strong></p>
</div>
';
}
}
Вариативный номинал купона
Сначала я хотел создать 2 одинаковых купона, но с разными условиями, но система предупредила что такой купон уже существует и будет использован тот который создан последним.
[site-socialshare]