从 WooCommerce 优惠券中排除具有特定属性条款的产品

Posted

技术标签:

【中文标题】从 WooCommerce 优惠券中排除具有特定属性条款的产品【英文标题】:Exclude products with specific attributes terms from WooCommerce coupons 【发布时间】:2021-04-13 11:20:21 【问题描述】:

我想从所有 WooCommerce 优惠券中排除具有特定属性(例如 attribute_pa_brand => mybrand)的产品。

我遵循了这个答案Exclude variations with 2 specific attribute terms from coupon usage in Woocommerce,但它似乎只适用于 Variable Product 类型,而我只需要它用于 Simple Product

如果有任何答案,我将不胜感激。

【问题讨论】:

【参考方案1】:

linked code from your question 用于产品变体类型。现在要使其适用于简单产品和可变产品(不针对特定的变体属性术语),您将使用以下内容:

add_filter( 'woocommerce_coupon_is_valid', 'custom_coupon_validity', 10, 3 );
function custom_coupon_validity( $is_valid, $coupon, $discount )
    // YOUR ATTRIBUTE SETTINGS BELOW:
    $taxonomy   = 'pa_brand'; // Set the taxonomy (start always with "pa_" + the slug)
    $term_names = array('Apple', 'Sony'); // Set your term NAMES to be excluded

    $term_ids = array(); // Initializing

    // Convert term names to term Ids
    foreach ( $term_names as $term_name ) 
        // Set each term id in the array
        $term_ids[] = get_term_by( 'name', $term_name, $taxonomy )->term_id;
    

    // Loop through cart items and check for backordered items
    foreach ( WC()->cart->get_cart() as $cart_item ) 
        $product = $cart_item['variation_id'] > 0 ? wc_get_product($cart_item['product_id']) : $cart_item['data'];
        // Loop through product attributes
        foreach( $product->get_attributes() as $attribute => $values ) 
            if( $attribute === $taxonomy && array_intersect( $values->get_options(), $term_ids ) ) 
                $is_valid = false; // attribute found, coupons are not valid
                break; // Stop and exit from the loop
            
        
    
    return $is_valid;

代码进入活动子主题(或活动主题)的functions.php 文件中。在上一个 WooCommerce 版本上测试并适用于简单和可变的产品。

【讨论】:

谢谢洛伊克。我非常希望你的回答。它完美地工作。希望能再次见到你!

以上是关于从 WooCommerce 优惠券中排除具有特定属性条款的产品的主要内容,如果未能解决你的问题,请参考以下文章

根据排除某些产品的 WooCommerce 购物车小计自动应用优惠券

从 WooCommerce 中的类别价格后缀更改中排除特定产品 ID

php [WooCommerce Core]从商店页面上的特定类别中排除产品

php [WooCommerce Core]从商店页面上的特定类别中排除产品

特定产品类别的强制性优惠券,避免在 Woocommerce 中结帐

如何从functions.php中的简码挂钩中排除产品类别ID - WooCommerce