首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过URL获取优惠券代码,并将其应用于WooCommerce结帐页面

问通过URL获取优惠券代码,并将其应用于WooCommerce结帐页面
EN

Stack Overflow用户
提问于 2018-01-12 13:40:13
回答 1查看 14.7K关注 0票数 14

我有一个WooCommerce网站,当客户添加到购物车的产品时,它被重定向到结帐页面,所以购物车页面是不可访问的。

我想申请优惠券通过网址(GET)在结账页面,与类似https://example.com/?coupon_code=highfive的东西。

当客户单击此URL时,优惠券代码将存储在浏览器会话中。然后,如果他添加到购物车中的任何产品,那么优惠券将应用到结账页面。

这个是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-12 19:36:21

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

第一个将捕获Url中的优惠券代码,并将其设置在WC_Sessions.

  • The中,第二个将应用结帐页面中
  • 的优惠券代码。

下面是代码:

代码语言:javascript
复制
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
    }
}

代码放在活动子主题(或活动主题)的function.php文件中。测试和工作

受此答案代码的启发,Lukasz Wiktor发布了一个插件:Woo Coupon URL

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48220205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档