首页 > 解决方案 > 从 Woocommerce 中的优惠券使用中排除具有 2 个特定属性术语的变体

问题描述

如果客户的购物车中有任何具有以下属性术语的特定产品变体,我需要防止使用优惠券:

我查看了适用于限制特定产品和特定类别的 Woocommerce 脚本,但无法弄清楚属性和所有优惠券。

任何帮助表示赞赏。

标签: phpwordpresswoocommercecustom-taxonomycoupon

解决方案


This can be done using woocommerce_coupon_is_valid filter hook this way:

add_filter( 'woocommerce_coupon_is_valid', 'check_if_coupons_are_valid', 10, 3 );
function check_if_coupons_are_valid( $is_valid, $coupon, $discount ){
    // YOUR ATTRIBUTE SETTINGS BELOW:
    $taxonomy   = 'pa_style';
    $term_slugs = array('swirly', 'circle');

    // Loop through cart items and check for backordered items
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        foreach( $cart_item['variation'] as $attribute => $term_slug ) {
            if( $attribute === 'attribute_'.$taxonomy && in_array( $term_slug, $term_slugs ) ) {
                $is_valid = false; // attribute found, coupons are not valid
                break; // Stop and exit from the loop
            }
        }
    }
    return $is_valid;
}

Code goes in function.php file of your active child theme (or active theme). Tested and works.


推荐阅读