
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文件即可