允许一些设置为 "individual use" 的 WooCommerce 优惠券一起应用
Allow some WooCommerce coupons set to "individual use" to be applied together
我们为所有优惠券勾选了“个人使用”,以防止使用多张优惠券。
有一个例外,我们需要这些“个人使用”优惠券才能用于其他特定优惠券。
例如:
共3张优惠券:
欢迎 10 - 个人使用 - 10% 折扣
欢迎 20 - 个人使用 - 20% 折扣
欢迎 30 - 30% 折扣
Welcome 10 和 Welcome 20 将像目前一样无法通过验证,但是,Welcome 10 或 Welcome 20 可以与 Welcome 30 一起使用。
所以 Welcome 30 基本上会覆盖对 individual_use 的验证。
这可能吗?
请注意,在 WooCommerce 代码中,要使用的优惠券代码是优惠券 slug (因此没有大写字母和空格)。
所以我用 3 个优惠券代码 Welcome10
、Welcome20
和 Welcome30
测试了下面的代码,所有 3 个都设置了“个人使用”选项限制(所以优惠券代码段是welcome10
、welcome20
和 welcome30
).
允许welcome30
优惠券代码与welcome10
或welcome20
一起使用的代码:
add_filter( 'woocommerce_apply_individual_use_coupon', 'filter_apply_individual_use_coupon', 10, 3 );
function filter_apply_individual_use_coupon( $coupons_to_keep, $the_coupon, $applied_coupons ) {
if ( $the_coupon->get_code() === 'welcome30' ) {
foreach( $applied_coupons as $key => $coupon_code ) {
if( in_array( $coupon_code, array('welcome10', 'welcome20') ) ) {
$coupons_to_keep[$key] = $applied_coupons[$key];
}
}
} elseif ( in_array( $the_coupon->get_code(), array('welcome10', 'welcome20') ) ) {
foreach( $applied_coupons as $key => $coupon_code ) {
if( $coupon_code == 'welcome30' ) {
$coupons_to_keep[$key] = $applied_coupons[$key];
}
}
}
return $coupons_to_keep;
}
add_filter( 'woocommerce_apply_with_individual_use_coupon', 'filter_apply_with_individual_use_coupon', 10, 4 );
function filter_apply_with_individual_use_coupon( $apply, $the_coupon, $applied_coupon, $applied_coupons ) {
if ( $the_coupon->get_code() === 'welcome-30' && in_array( $applied_coupon->get_code(), array('welcome10', 'welcome20') ) ) {
$apply = true;
} elseif ( in_array( $the_coupon->get_code(), array('welcome10', 'welcome20') ) && $applied_coupon->get_code() === 'welcome30' ) {
$apply = true;
}
return $apply;
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
我们为所有优惠券勾选了“个人使用”,以防止使用多张优惠券。
有一个例外,我们需要这些“个人使用”优惠券才能用于其他特定优惠券。
例如:
共3张优惠券: 欢迎 10 - 个人使用 - 10% 折扣 欢迎 20 - 个人使用 - 20% 折扣 欢迎 30 - 30% 折扣
Welcome 10 和 Welcome 20 将像目前一样无法通过验证,但是,Welcome 10 或 Welcome 20 可以与 Welcome 30 一起使用。
所以 Welcome 30 基本上会覆盖对 individual_use 的验证。
这可能吗?
请注意,在 WooCommerce 代码中,要使用的优惠券代码是优惠券 slug (因此没有大写字母和空格)。
所以我用 3 个优惠券代码 Welcome10
、Welcome20
和 Welcome30
测试了下面的代码,所有 3 个都设置了“个人使用”选项限制(所以优惠券代码段是welcome10
、welcome20
和 welcome30
).
允许welcome30
优惠券代码与welcome10
或welcome20
一起使用的代码:
add_filter( 'woocommerce_apply_individual_use_coupon', 'filter_apply_individual_use_coupon', 10, 3 );
function filter_apply_individual_use_coupon( $coupons_to_keep, $the_coupon, $applied_coupons ) {
if ( $the_coupon->get_code() === 'welcome30' ) {
foreach( $applied_coupons as $key => $coupon_code ) {
if( in_array( $coupon_code, array('welcome10', 'welcome20') ) ) {
$coupons_to_keep[$key] = $applied_coupons[$key];
}
}
} elseif ( in_array( $the_coupon->get_code(), array('welcome10', 'welcome20') ) ) {
foreach( $applied_coupons as $key => $coupon_code ) {
if( $coupon_code == 'welcome30' ) {
$coupons_to_keep[$key] = $applied_coupons[$key];
}
}
}
return $coupons_to_keep;
}
add_filter( 'woocommerce_apply_with_individual_use_coupon', 'filter_apply_with_individual_use_coupon', 10, 4 );
function filter_apply_with_individual_use_coupon( $apply, $the_coupon, $applied_coupon, $applied_coupons ) {
if ( $the_coupon->get_code() === 'welcome-30' && in_array( $applied_coupon->get_code(), array('welcome10', 'welcome20') ) ) {
$apply = true;
} elseif ( in_array( $the_coupon->get_code(), array('welcome10', 'welcome20') ) && $applied_coupon->get_code() === 'welcome30' ) {
$apply = true;
}
return $apply;
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。