在Woocommerce上,我正在尝试根据特定的送货方式申请优惠券。
有两种送货方式:
如果客户选择第二天DPD:£4.00的送货方式,则应自动应用特定的优惠券代码“ discount4”。
如果客户选择了3天免费送货:0.00英镑的送货方式,则优惠券代码不适用。
感谢您的帮助或跟踪。
答案 0 :(得分:1)
如果所选的送货方式不是“免费送货”,以下代码将自动应用优惠券;如果应用了优惠券并且客户更改为“免费送货”,则以下代码将删除该优惠券:
// Add / remove coupon based on cosen shipping
add_action( 'woocommerce_before_calculate_totals', 'adding_removing_coupon_shipping_based' );
function adding_removing_coupon_shipping_based( $cart ) {
if (is_admin() && !defined('DOING_AJAX'))
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// HERE the specific coupon code
$coupon_code = 'discount4';
$coupon_code = wc_format_coupon_code( $coupon_code );
$chosen_shipping = WC()->session->get('chosen_shipping_methods')[0];
$applied_coupons = $cart->get_applied_coupons();
$is_free = strpos( $chosen_shipping, 'free_shipping' ) !== false;
$is_applied = in_array( $coupon_code, $applied_coupons );
if ( $is_applied && $is_free )
$cart->remove_coupon( $coupon_code );
elseif ( ! $is_applied && ! $is_free )
$cart->apply_coupon( $coupon_code );
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。
如果您采用多种送货方式,则应在问题中输入正确的送货方式费率ID,例如 DPD次日付款:£4.00 ,例如“
flat_rate:18
”,代码而不是总是以free_shipping
开始的免费送货…