如何高效在WooCommerce优惠券中排除多个产品ID?
优化方案
可以把需要排除的产品ID集中放到一个数组里,用in_array()函数一次性判断,大幅简化代码,同时后续维护(添加/移除产品ID)也更高效:
add_filter( 'woocommerce_coupon_is_valid_for_product', 'quadlayers_exclude_product_from_product_promotions', 9999, 4 ); function quadlayers_exclude_product_from_product_promotions( $valid, $product, $coupon, $values ) { // 定义禁止使用优惠券的产品ID数组 $excluded_product_ids = [49134, 49137, 29873, 43181, 49317, 114863, 117949, 120076, 122660, 129323]; // 如果当前产品在排除列表中,将有效性设为false if ( in_array( $product->get_id(), $excluded_product_ids ) ) { $valid = false; } return $valid; }
优势说明
- 易维护:后续新增/移除禁止使用优惠券的产品,只需修改
$excluded_product_ids数组即可,无需重复编写if判断 - 代码简洁:将重复的判断逻辑合并,可读性更高
- 逻辑一致:保留原代码的核心逻辑,仅优化写法,不会改变原有功能
内容的提问来源于stack exchange,提问作者adem007
相关产品推荐
相关产品推荐

