首页 文章

通过URL获取优惠券代码并将其应用于Woocommerce Checkout页面[关闭]

提问于
浏览
3

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

我想在结帐页面上通过URL(GET)申请优惠券,例如:
https://example.com/?coupon_code=highfive .
当客户点击此网址时,优惠券代码将存储在浏览器会话中 . 然后,如果他将任何产品添加到购物车,则优惠券将应用于结帐页面 .

这可能吗?

任何帮助将不胜感激 .

1 回答

  • 8

    Update2: 这可以通过以下2个钩子函数以非常简单的方式完成:

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

    • 第二个将在结帐页面的会话中应用优惠券代码 .

    这是这段代码:

    add_action('wp_footer', 'get_custom_coupon_code_to_session');
    function get_custom_coupon_code_to_session(){
        if( isset($_GET['coupon_code']) ){
            $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( ) {
    
        $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文件中 .

    经过测试和工作

相关问题