在 Woocommerce 中自动为一种运输方式应用优惠券
Apply coupon automatically for one shipping method in Woocommerce
在 Woocommerce 上,我正在尝试根据特定的送货方式应用优惠券。
设置了两种送货方式:
- 免运费(3 天):0.00 英镑
- DPD 次日:4.00 英镑
如果客户选择 DPD Next Day:4.00 英镑送货方式,则应自动应用特定的优惠券代码 "discount4"。
如果客户选择免费送货(3 天):0.00 英镑送货方式,则不应使用优惠券代码。
感谢任何帮助或跟踪。
如果选择的送货方式不是 "Free shipping",以下代码将自动应用优惠券,如果已应用且客户更改为 "Free shipping":
,则将删除该优惠券
// 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 文件。已测试并有效。
If you have multiple shipping methods, you should give in your question the correct shipping method rate ID like "flat_rate:18
" for DPD Next Day: £4.00, to be targeted in the code instead of free shipping which always start by free_shipping
…
在 Woocommerce 上,我正在尝试根据特定的送货方式应用优惠券。
设置了两种送货方式:
- 免运费(3 天):0.00 英镑
- DPD 次日:4.00 英镑
如果客户选择 DPD Next Day:4.00 英镑送货方式,则应自动应用特定的优惠券代码 "discount4"。
如果客户选择免费送货(3 天):0.00 英镑送货方式,则不应使用优惠券代码。
感谢任何帮助或跟踪。
如果选择的送货方式不是 "Free shipping",以下代码将自动应用优惠券,如果已应用且客户更改为 "Free shipping":
,则将删除该优惠券// 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 文件。已测试并有效。
If you have multiple shipping methods, you should give in your question the correct shipping method rate ID like "
flat_rate:18
" for DPD Next Day: £4.00, to be targeted in the code instead of free shipping which always start byfree_shipping
…