我有一个WooCommerce网站,当客户添加产品到购物车后,会自动重定向到结帐页面,因此无法访问购物车页面。
我想通过URL(GET
)在结帐页面上应用优惠券,例如https://example.com/?coupon_code=highfive
。
当客户单击此URL时,优惠码将存储在浏览器会话中。然后,如果他将任何产品添加到购物车,则会将优惠券应用于结帐页面。
这个可能吗?
我有一个WooCommerce网站,当客户添加产品到购物车后,会自动重定向到结帐页面,因此无法访问购物车页面。
我想通过URL(GET
)在结帐页面上应用优惠券,例如https://example.com/?coupon_code=highfive
。
当客户单击此URL时,优惠码将存储在浏览器会话中。然后,如果他将任何产品添加到购物车,则会将优惠券应用于结帐页面。
这个可能吗?
更新3:可以通过以下两个钩子函数非常简单地完成此操作:
以下是代码:
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