在 WooCommerce 中禁用订阅产品的优惠券
Disable coupons for subscription products in WooCommerce
我正在尝试禁用我通过“所有订阅产品”附加组件设置的 WooCommerce 订阅的优惠券代码。我试过下面的代码片段,但它没有针对通过“所有订阅产品”插件添加的订阅产品。我可能完全走错了方向。
我有一个测试产品here
下面是我的代码尝试:
function sw_wc_apfs_disable_on_susbcription( $is_valid, $product, $instance, $values ) {
if ( ! empty( $values[ ‘wcsatt_data’][ ‘active_subscription_scheme’ ] ) ) {
$is_valid = false;
}
return $is_valid;
}
它不起作用……感谢任何帮助。
您的代码有点不完整,因为您的代码中缺少钩子。你的代码也有一些错误。
只有 3 个参数 woocommerce_coupon_is_valid
挂钩,因此您需要循环遍历购物车商品。
下面是2个代码版本:
1).对于使用 “订阅的所有产品” 的订阅产品添加 (代码已注释):
add_filter( 'woocommerce_coupon_is_valid', 'disable_coupons_for_subscription_products', 10, 3 );
function disable_coupons_for_subscription_products( $is_valid, $coupon, $discount ){
// Loop through cart items
foreach ( WC()->cart->get_cart() as $cart_item ) {
// Check for subscription products using "All products for subscription" add on
if ( isset($cart_item['wcsatt_data']['active_subscription_scheme'])
&& ! empty($cart_item['wcsatt_data']['active_subscription_scheme']) ) {
$is_valid = false; // Subscription product found: Make coupons "not valid"
break; // Stop and exit from the loop
}
}
return $is_valid;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。它应该有效。
2).对于普通订阅产品(代码有注释):
add_filter( 'woocommerce_coupon_is_valid', 'disable_coupons_for_subscription_products', 10, 3 );
function disable_coupons_for_subscription_products( $is_valid, $coupon, $discount ){
// Loop through cart items
foreach ( WC()->cart->get_cart() as $cart_item ) {
// Check for subscription products
if( in_array( $cart_item['data']->get_type(), array('subscription', 'subscription_variation') ) ) {
$is_valid = false; // Subscription product found: Make coupons "not valid"
break; // Stop and exit from the loop
}
}
return $is_valid;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
我正在尝试禁用我通过“所有订阅产品”附加组件设置的 WooCommerce 订阅的优惠券代码。我试过下面的代码片段,但它没有针对通过“所有订阅产品”插件添加的订阅产品。我可能完全走错了方向。
我有一个测试产品here
下面是我的代码尝试:
function sw_wc_apfs_disable_on_susbcription( $is_valid, $product, $instance, $values ) {
if ( ! empty( $values[ ‘wcsatt_data’][ ‘active_subscription_scheme’ ] ) ) {
$is_valid = false;
}
return $is_valid;
}
它不起作用……感谢任何帮助。
您的代码有点不完整,因为您的代码中缺少钩子。你的代码也有一些错误。
只有 3 个参数 woocommerce_coupon_is_valid
挂钩,因此您需要循环遍历购物车商品。
下面是2个代码版本:
1).对于使用 “订阅的所有产品” 的订阅产品添加 (代码已注释):
add_filter( 'woocommerce_coupon_is_valid', 'disable_coupons_for_subscription_products', 10, 3 );
function disable_coupons_for_subscription_products( $is_valid, $coupon, $discount ){
// Loop through cart items
foreach ( WC()->cart->get_cart() as $cart_item ) {
// Check for subscription products using "All products for subscription" add on
if ( isset($cart_item['wcsatt_data']['active_subscription_scheme'])
&& ! empty($cart_item['wcsatt_data']['active_subscription_scheme']) ) {
$is_valid = false; // Subscription product found: Make coupons "not valid"
break; // Stop and exit from the loop
}
}
return $is_valid;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。它应该有效。
2).对于普通订阅产品(代码有注释):
add_filter( 'woocommerce_coupon_is_valid', 'disable_coupons_for_subscription_products', 10, 3 );
function disable_coupons_for_subscription_products( $is_valid, $coupon, $discount ){
// Loop through cart items
foreach ( WC()->cart->get_cart() as $cart_item ) {
// Check for subscription products
if( in_array( $cart_item['data']->get_type(), array('subscription', 'subscription_variation') ) ) {
$is_valid = false; // Subscription product found: Make coupons "not valid"
break; // Stop and exit from the loop
}
}
return $is_valid;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。