根据产品属性条款有条件地应用WooCommerce优惠券



我试图从优惠券折扣中排除一些具有特定产品属性的产品变体。

就我而言,我定位的是商品属性"饰面"设置为"经典框架"或"盒框"术语的商品变体。

我尝试使用"从 WooCommerce 中的优惠券使用中排除具有 2 个特定属性术语的变体"答案代码,当产品变体将产品属性"完成"设置为"经典框架"或"盒子框架"术语时,它确实会使优惠券无效。

但它也使优惠券对添加到购物车的任何其他商品无效

例如,如果购物车中有 3 件商品:

  • 商品 1:具有"经典框架"属性 ==>优惠券不适用于此商品
  • 商品 2:具有属性"箱框"==>优惠券不适用于此商品
  • 第 3 项:具有"松散"属性 ==> 优惠券应对此商品有效

所以我想要的是优惠券折扣仅适用于其他项目。

任何帮助真的非常感谢。

"从WooCommerce 中的优惠券使用中排除具有 2 个特定属性术语的变体"答案代码的目的是,如果有任何产品变体具有"完成"产品属性(对于变体(设置的"经典框架"或"盒子框架"术语,则优惠券无效。

是的,即使还有其他项目没有它,它也会使优惠券无效,这是正确的行为

为什么?

因为具有"百分比折扣">
  • 或"固定购物车折扣"的(全局购物车(优惠券在使用属性时不允许仅适用于某些购物车商品(即某些产品变体(,而不能应用于其他商品$is_valid商品。

  • 如果您使用"排除产品 IDS">优惠券属性,情况也是如此,因为它不处理产品变体 ID

也许存在一个扩展优惠券可能性的商业插件,允许将产品变体 IDS(添加可用的过滤器钩子(排除到该扩展功能中。

您可以使用此过滤器

function filter_woocommerce_coupon_get_discount_amount( $discounting_amount, $price_to_discount , $cart_item, $single, $coupon ) {    
// On backorder
if ( $cart_item['data']->get_attribute('attribute') !== 'attribute_value' ) {
$discounting_amount = 0;
}
return $discounting_amount;
}
add_filter( 'woocommerce_coupon_get_discount_amount', 'filter_woocommerce_coupon_get_discount_amount', 10, 5 );

最新更新