隐藏Woocommerce 3中特定产品类别的购物车优惠券字段

时间:2018-08-05 15:09:28

标签: php wordpress woocommerce custom-taxonomy coupon

function hidding_coupon_field_on_cart_for_a_category($enabled) {
    // Set your special category name, slug or ID here:
    $special_cat = 'clothing';
    $bool = false;

    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        $wc_product = $cart_item['data'];
        // Woocommerce compatibility
        $product_id = method_exists( $wc_product, 'get_id' ) ? $wc_product->get_id() : $wc_product->id;
        if ( has_term( $special_cat, 'product_cat', $product_id ) )
            $bool = true;
    }

    if ( $bool && is_cart() ) {
        $enabled = false;
    }
    return $enabled;
}
add_filter( 'woocommerce_coupons_enabled', 'hidding_coupon_field_on_cart_for_a_category' );

找到了这个代码片段,这个代码很好用,但是如果我有一个变量而不是一个简单的产品,则该类别隐藏似乎不再起作用。

$special_cat = 'prints';
$product_id  = array('9461', '9597');

也排除主要产品ID,而变体ID不起作用。有人有主意吗?

1 个答案:

答案 0 :(得分:0)

  

更新2 -2018年10月(在最新的Woocommerce版本上仍然可以正常使用)

要使其适用于所有产品类型(包括可变产品),请改用此方法:

add_filter( 'woocommerce_coupons_enabled', 'product_category_hide_cart_coupon_field', 20, 1 );
function product_category_hide_cart_coupon_field( $enabled ) {
    // Only on frontend
    if( is_admin() ) 
       return $enabled;

    // Set your special categories names, slugs or IDs here in the array:
    $categories = array('prints');
    $found = false; // Initializing

    // Loop through cart items
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        if ( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ){
            $found = true;
            break; // We stop the loop
        }
    }

    if ( $found && is_cart() ) {
        $enabled = false;
    }
    return $enabled;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。