
WooCommerce:给指定的产品添加禁止使用优惠券功能
我们在woocommerce创建单个优惠券时,可以给优惠券排除某些产品或产品类目,禁止其使用优惠券。
但某些特殊情况下,比如我们的网站加入了联盟营销,某些联盟营销网站会在我们的独立站后台定期自动创建批量优惠券,而我们还想继续实现不让某些产品使用优惠券这个功能,此时我们就需要一个一劳永逸的办法:程序化设置指定的产品,给指定的产品添加禁止使用优惠券功能,也不用在设置优惠券的时候手动排除了:
方法1:
// disable all coupons for certain products
function fjj_exclude_products_for_cart_coupons( $valid, $coupon ) {
if ( ! $valid ) return false;
$excluded_ids = array( 245 );//这里指定禁用优惠券的产品ID
foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( in_array( $cart_item['product_id'], $excluded_ids ) ) {
$valid = false;
break;
}
}
return $valid;
}
add_filter( 'woocommerce_coupon_is_valid', 'fjj_exclude_products_for_cart_coupons', 10, 2 );方法2:
// product IDs that cannot use coupons
function zero_discount_for_specific_products_with_notice($discount, $discounting_amount, $cart_item, $single, $coupon) {
$restricted_products = array(11924,11706,9420);//这里指定禁用优惠券的产品ID
if (in_array($cart_item['product_id'], $restricted_products)) {
$product = wc_get_product($cart_item['product_id']);
$product_name = $product ? $product->get_name() : 'This product';
if (!wc_has_notice("\"{$product_name}\" cannot use coupons.", 'error')) {
wc_add_notice("\"{$product_name}\" cannot use coupons.", 'error');
}
return 0; // Force discount to 0
}
return $discount;
}
add_filter('woocommerce_coupon_get_discount_amount', 'zero_discount_for_specific_products_with_notice', 10, 5);将上述任意一代码添加到网站主题模板目录下的functions.php文件即可
