복붙노트

[WORDPRESS] WooCommerce 제품 카테고리를 기반으로 특정 장바구니 항목 수량 필드 비활성화

WORDPRESS

WooCommerce 제품 카테고리를 기반으로 특정 장바구니 항목 수량 필드 비활성화

해결법


  1. 1.다음 코드는 특정 제품 카테고리 (2nd 함수에서 정의 할 수있는 항목)의 항목에 대해 장바구니에서 "수량 필드"를 제거합니다.

    다음 코드는 특정 제품 카테고리 (2nd 함수에서 정의 할 수있는 항목)의 항목에 대해 장바구니에서 "수량 필드"를 제거합니다.

    // Custom conditional function that checks for categories (including parent)
    function has_product_categories( $product_id, $categories ) {
         // Initializing
        $parent_term_ids = $categories_ids = array();
        $taxonomy        = 'product_cat';
    
        // Convert categories term names and slugs to categories term ids
        foreach ( $categories as $category ){
            if( is_numeric( $category ) ) {
                $categories_ids[] = (int) $category;
            } elseif( term_exists( sanitize_title( $category ), $taxonomy ) ) {
                $categories_ids[] = get_term_by( 'slug', sanitize_title( $category ), $taxonomy )->term_id;
            }
        }
    
        // Loop through the current product category terms to get only parent main category term
        foreach( get_the_terms( $product_id, $taxonomy ) as $term ){
            if( $term->parent > 0 ){
                $parent_term_ids[] = $term->parent; // Set the parent product category
                $parent_term_ids[] = $term->term_id; // (and the child)
            } else {
                $parent_term_ids[] = $term->term_id; // It is the Main category term and we set it.
            }
        }
        return array_intersect( $categories_ids, array_unique($parent_term_ids) ) ? true : false;
    }
    
    add_filter( 'woocommerce_quantity_input_args', 'hide_cart_quantity_input_field', 20, 2 );
    function hide_cart_quantity_input_field( $args, $product ) {
        // HERE your specific products categories
        $categories = array( 'clothing' );
    
        // Handling product variation
        $product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();
    
        // Only on cart page for a specific product category
        if( is_cart() && has_product_categories( $product_id, $categories ) ){
            $input_value = $args['input_value'];
            $args['min_value'] = $args['max_value'] = $input_value;
        }
        return $args;
    }
    

    코드는 Active Child 테마 (또는 활성 테마)의 function.php 파일입니다. 테스트하고 작동합니다.

  2. from https://stackoverflow.com/questions/54047617/disable-specific-cart-item-quantity-fields-based-on-woocommerce-product-category by cc-by-sa and MIT license