如何将优惠券自动应用到 WooCommerce 购物车

已发表: 2020-06-25

折扣是增加销售额的好方法,有助于建立良好的客户关系。 这是一种吸引客户回到您的商店并再次购买的方式。

WooCommerce 还为店主提供了一项功能,为他们的客户添加折扣券。 他们使用不同的方式与客户联系以获取优惠券,例如向他们发送电子邮件、在他们的网站上添加横幅等等。 但有时客户可能会在结账时忘记使用优惠券。

因此,如果作为店主,您不希望您的客户在不使用折扣券的情况下购买产品,那么您必须找到一种方法,让客户在购买时将优惠券自动应用到购物车中。 可以通过电子邮件向客户提供优惠券代码 URL 或将其添加到网站上,点击后,优惠券将自动应用于购物车。 或者更简单的方法是在客户将产品添加到购物车时自动应用优惠券代码。

在 WooCommerce 中,目前没有自动应用折扣券的选项,但可以通过添加代码片段或使用一些可用的扩展来实现这一点。

使用代码片段

让我们在这里举个例子,店主希望在万圣节、黑色星期五或圣诞节期间为价值超过 250 美元的订单提供 20% 的折扣,并且他希望他的客户都不会错过折扣。 因此,为了实现这一点,我们将在下面讨论两种方法。

1.添加产品时直接将优惠券代码应用到购物车

为此,第一步是在 WooCommerce 中创建一个优惠券代码,在 Add New Coupon / Edit Coupon -> Usage Restrictions 菜单下,最低消费限制为 250 美元。

Minimum Spend for Coupon
优惠券最低消费

优惠券是根据业主的要求添加的,但由于此处输入优惠券仍然是手动过程,因此客户很可能忘记使用优惠券代码。 因此,避免这种情况的最佳方法是将代码自动应用于购物车。 这可以通过将以下代码添加到子主题的 functions.php 文件或使用任何代码片段插件来实现。

 /**
 * 将优惠券自动应用到购物车 
 */

功能 ts_apply_discount_to_cart() {
    
    $order_total = WC()->购物车->get_subtotal();
  
    如果($order_total > 250){
        $coupon_code = '20%OFF';
        if ( !WC()->cart->add_discount( sanitize_text_field( $coupon_code ) ) ) {
            WC()->show_messages();
        }
    }
}
add_action('woocommerce_before_cart_table', 'ts_apply_discount_to_cart');

在这里,我们在显示购物车表之前使用了 WooCommerce 购物车表单中的 woocommerce_before_cart_table 钩子。 在这个钩子中,我们检查订单总额,如果订单总额为 250 美元或更多,那么我们将使用 add_discount() 函数将“20%OFF”优惠券应用于购物车。

Automatically apply coupon code on cart
自动在购物车上应用优惠券代码

2. 使用优惠券代码 URL

将优惠券代码直接应用到购物车的另一种方法是通过电子邮件、新闻通讯或通过在网站上以横幅的形式发布优惠券代码 URL 向客户提供优惠券代码 URL。 因此,当客户点击 URL 并且产品已添加到购物车时,将自动应用优惠券代码。

为此,您需要在子主题的 functions.php 文件中添加以下代码。

 /**
 * 如果查询字符串具有优惠券代码变量,则在页面加载时设置会话变量。
 */
功能 ts_get_custom_coupon_code_to_session() {

    if( isset( $_GET[ 'coupon_code' ] ) ) {
        // 确保客户会话已启动
        if( !WC()->session->has_session() )
            WC()->会话->set_customer_session_cookie(true);
      
        // 在自定义会话变量中检查并注册优惠券代码
        $coupon_code = WC()->session->get('coupon_code');
        如果(空($coupon_code)&& isset($_GET['coupon_code'])){
            $coupon_code = esc_attr($_GET['coupon_code']);
            WC()->session->set('coupon_code', $coupon_code); // 在会话中设置优惠券代码
        }
    }
}
add_action('init', 'ts_get_custom_coupon_code_to_session');

/**
 * 如果会话有 coupon_code 变量,则将优惠券代码应用于购物车。 
 */
功能 ts_apply_discount_to_cart() {
    //设置优惠券代码
    $coupon_code = WC()->session->get('coupon_code');
    if ( !empty( $coupon_code ) && !WC()->cart->has_discount( $coupon_code ) ){
        WC()->购物车->add_discount($coupon_code); // 应用优惠券折扣
        WC()->session->__unset('coupon_code'); // 从会话中删除优惠券代码
    }
}
add_action('woocommerce_before_cart_table', 'ts_apply_discount_to_cart', 10, 0);

这里我们使用了两个钩子 init 和 woocommerce_before_cart_table。 在 init 钩子中,我们正在检查当前 URL 是否包含 coupon_code 查询变量,如果包含,则变量的值存储在 WooCommerce 会话中。 在 woocommerce_before_cart_table 钩子中,我们正在检查是否在 WooCommerce 会话中设置了 coupon_code 变量,然后将该优惠券代码应用于购物车。

添加上述代码后,您可以使用以下 URL 将其发送给您的客户。

 https://mywebsite.com/?coupon_code=20OFFChristmas

或者,如果您想在应用优惠券后将 URL 直接重定向到购物车或结帐页面,您可以使用以下 URL。

 https://mywebsite.com/cart/?coupon_code=20OFFChristmas
 https://mywebsite.com/checkout/?coupon_code=20OFFChristmas 
Coupon Applied with URL contains coupon_code Variable
使用 URL 应用的优惠券包含 coupon_code 变量

将优惠券应用到购物车后,您不希望您的客户将另一张优惠券添加到同一个购物车中。 所以最好在购物车和结帐页面上隐藏优惠券代码字段。 这是另一篇解释如何隐藏 WooCommerce 优惠券代码字段的帖子。

使用 WooCommerce 扩展

实现此目的的另一种方法是使用不同的 WooCommerce 扩展程序,它允许您将优惠券代码自动应用于购物车。 下面是一些扩展:

  1. Smart Coupons – 这个插件拥有您使用折扣、优惠券、信用、代金券、产品赠品、优惠和促销来增加销售和客户所需的一切。 它是 WooCommerce 最畅销和最完整的优惠券管理插件。
  2. WooCommerce URL 优惠券 – WooCommerce URL 优惠券扩展可帮助您创建独特的 URL,自动将折扣和产品应用于客户的购物车。 您可以在访问唯一 URL 后更改客户重定向的位置,您的 URL 优惠券仍将遵守所有优惠券限制,例如使用限制。
  3. 高级优惠券 - 高级优惠券扩展了您的优惠券功能,因此您可以更好地营销您的商店。
  4. WooCommerce 扩展优惠券功能免费 - “WooCommerce 扩展优惠券功能”为 WooCommerce 优惠券添加了功能,并允许自动折扣规则。 非常易于使用,该功能方便地集成到 WooCommerce 编辑优惠券面板。
  5. WooCommerce 的自动优惠券 – 这是一个简单轻量级的插件,如果符合设定的规则,它只允许将优惠券自动应用到购物车。

因此,您可以使用代码片段或插件为客户提供不容错过的购买折扣。