WooCommerce 默认模板中,在购物车和结帐页上面,会有一个允许用户输入优惠券的表单,从用户体验角度来说,优惠券表单会分散潜在客户的注意力,让他们放弃结账去寻找折扣代码。
不过,提供折扣仍然是鼓励购买和奖励忠实客户的必不可少重要策略,最好的折衷办法是在客户访问特定 URL 时使用优惠券。通过这种方式,我们可以简化结账流程,减少摩擦,最终提高转换率。
在这篇教程中,我们将学习怎么在 WooCommerce 中设置自动应用优惠券,确保为你和顾客提供无缝、高效的购物结帐体验。
上面的截图中,URL 中有一个参数 「code」,其值就是优惠券代码。使用下面的代码段,无需用户手动操作,即可自动将优惠券代码应用到购物车中!
根据 URL 参数以编程方式应用 WooCommerce 优惠券
有两点需要注意。
首先,我们必须确定要使用的 URL 参数。在下面的代码段中,我们使用了「code」,当然,你也可以随意更改,然后我们需要把优惠券包含到这个参数从,如:example.com/?code=xyz
当然,我们需要先创建,才能把优惠券添加到URL参数中。根据营销策略的需要,我们需要考虑优惠券代码是使用随机代码还是使用有意义的代码。创建优惠券后,如果你不希望别人用不同的 URL 在购物车中添加多个优惠券,请务必在优惠券使用限制设置中勾选“仅限个人使用 “复选框(”如果优惠券不能与其他优惠券同时使用,请勾选此复选框”)。
除此之外,下面的代码分为两部分,结果都是一样的。唯一的区别是,一个函数将在购物车不为空时起作用(wprs_add_coupon_to_session),而另一个函数将在你添加到购物车时触发(wprs_add_coupon_to_cart)。
function wprs_add_coupon_to_session()
{
if (empty($_GET['code'])) return;
if ( ! WC()->session || (WC()->session && ! WC()->session->has_session())) {
WC()->session->set_customer_session_cookie(true);
}
$coupon_code = esc_attr($_GET['code']);
WC()->session->set('coupon_code', $coupon_code);
if (WC()->cart && ! WC()->cart->has_discount($coupon_code)) {
WC()->cart->calculate_totals();
WC()->cart->add_discount($coupon_code);
WC()->session->__unset('coupon_code');
}
}
add_action('woocommerce_add_to_cart', 'wprs_add_coupon_to_cart');
function wprs_add_coupon_to_cart()
{
$coupon_code = WC()->session ? WC()->session->get('coupon_code') : false;
if ( ! $coupon_code || empty($coupon_code)) return;
if (WC()->cart && ! WC()->cart->has_discount($coupon_code)) {
WC()->cart->calculate_totals();
WC()->cart->add_discount($coupon_code);
WC()->session->__unset('coupon_code');
}
}
把上面的代码添加到主题的 functions.php 或插件的合适位置,即可实现通过URL自动应用优惠券的功能,如果您有更好的实现方法,欢迎在评论中分享,我们一起讨论。