WooCommerce get products by attribute query

前端 未结 1 609
北荒
北荒 2020-12-15 12:57

I have a product with attribute colors. Attribute values are red, blue and green. I am trying to create a custom search but I can\'t get the query to pull any product.

相关标签:
1条回答
  • 2020-12-15 13:26

    The correct taxonomy for the product attribute color is 'pa_color', so the correct working query is:

    // The query
    $products = new WP_Query( array(
       'post_type'      => array('product'),
       'post_status'    => 'publish',
       'posts_per_page' => -1,
       'meta_query'     => array( array(
            'key' => '_visibility',
            'value' => array('catalog', 'visible'),
            'compare' => 'IN',
        ) ),
       'tax_query'      => array( array(
            'taxonomy'        => 'pa_color',
            'field'           => 'slug',
            'terms'           =>  array('blue', 'red', 'green'),
            'operator'        => 'IN',
        ) )
    ) );
    
    // The Loop
    if ( $products->have_posts() ): while ( $products->have_posts() ):
        $products->the_post();
        $product_ids[] = $products->post->ID;
    endwhile;
        wp_reset_postdata();
    endif;
    
    // TEST: Output the Products IDs
    print_r($product_ids);
    

    This code is tested and works. You will get all products that have Color attribute with the values (terms) 'blue', 'red' and 'green'…

    Since WooCommerce 3, product visibility is handled by custom taxonomy product_visibility. You can see the following related threads:

    • Database changes for products in woocommerce 3
    • Get products which are visible in catalog in a WP_query on Woocommerce
    0 讨论(0)
提交回复
热议问题