通过 URL 获取优惠券代码并将其应用于 WooCommerce Checkout 页面 [英] GET a coupon code via URL and apply it in WooCommerce Checkout page

查看:16
本文介绍了通过 URL 获取优惠券代码并将其应用于 WooCommerce Checkout 页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 WooCommerce 网站,当客户将产品添加到购物车时,它会被重定向到结帐页面,因此无法访问购物车页面.

我想通过结帐页面上的 URL (GET) 应用优惠券,例如 https://example.com/?coupon_code=highfive.>

当客户点击此 URL 时,优惠券代码将存储在浏览器会话中.然后,如果他将任何产品添加到购物车,则优惠券将应用于结帐页面.

这可能吗?

解决方案

更新 3: 这可以通过以下 2 个挂钩函数以非常简单的方式完成:

  • 第一个将捕获 Url 中的优惠券代码并将其设置在 WC_Sessions 中.
  • 第二个将在结帐页面应用会话中的优惠券代码.

代码如下:

add_action('init', 'get_custom_coupon_code_to_session');函数 get_custom_coupon_code_to_session(){if(isset($_GET['coupon_code'])){//确保客户会话已启动if(isset(WC()->session) &&!WC()->session->has_session() )WC()->session->set_customer_session_cookie(true);//在自定义会话变量中检查并注册优惠券代码$coupon_code = WC()->session->get('coupon_code');如果(空($coupon_code)){$coupon_code = esc_attr( $_GET['coupon_code'] );WC()->session->set('coupon_code', $coupon_code);//在会话中设置优惠券代码}}}add_action('woocommerce_before_checkout_form', 'add_discout_to_checkout', 10, 0);函数 add_discout_to_checkout( ) {//设置优惠码$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');//从会话中删除优惠券代码}}

代码位于活动子主题(或活动主题)的 function.php 文件中. 测试并有效

<块引用>

受此答案代码的启发,Lukasz Wiktor 发布了一个插件:Woo 优惠券网址

I have a WooCommerce website and when customer add-to-cart a product, it is get redirected to checkout page, so cart page is not accessible.

I would like to apply coupon via URL (GET) on checkout page, with something like https://example.com/?coupon_code=highfive.

When customer click this URL then the coupon code is stored in browser sessions. Then if he add-to-cart any product then the coupon is applied into checkout page.

Is this possible?

解决方案

Update 3: This can be done in a very simple way with the following 2 hooked functions:

  • The first one will catch the coupon code in the Url and will set it in WC_Sessions.
  • The second one will apply the coupon code from session in checkout page.

Here is this code:

add_action('init', 'get_custom_coupon_code_to_session');
function get_custom_coupon_code_to_session(){
    if( isset($_GET['coupon_code']) ){
        // Ensure that customer session is started
        if( isset(WC()->session) && ! WC()->session->has_session() )
            WC()->session->set_customer_session_cookie(true);
            
        // Check and register coupon code in a custom session variable
        $coupon_code = WC()->session->get('coupon_code');
        if(empty($coupon_code)){
            $coupon_code = esc_attr( $_GET['coupon_code'] );
            WC()->session->set( 'coupon_code', $coupon_code ); // Set the coupon code in session
        }
    }
}

add_action( 'woocommerce_before_checkout_form', 'add_discout_to_checkout', 10, 0 );
function add_discout_to_checkout( ) {
    // Set coupon code
    $coupon_code = WC()->session->get('coupon_code');
    if ( ! empty( $coupon_code ) && ! WC()->cart->has_discount( $coupon_code ) ){
        WC()->cart->add_discount( $coupon_code ); // apply the coupon discount
        WC()->session->__unset('coupon_code'); // remove coupon code from session
    }
}

Code goes in function.php file of the active child theme (or active theme). Tested and works

Inspired from this answer code, Lukasz Wiktor has published a plugin: Woo Coupon URL

这篇关于通过 URL 获取优惠券代码并将其应用于 WooCommerce Checkout 页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆