How to filter WooCommerce products by custom attribute

I’m trying to filter WooCommerce product archive by custom attributes.

For example, there are 5 products with attribute “color” containing “red”, and another 3 with attribute “color” containing “blue”.

Read More

How can I apply a filter to the products loop, so only the products containing “red” will be shown?

Thanks

Related posts

Leave a Reply

2 comments

  1. On one of my sites I had to make a custom search by a lot of data some of it from custom fields here is how my $args look like for one of the options:

    $args = array(
        'meta_query' => $meta_query,
        'tax_query' => array(
            $query_tax
        ),
        'posts_per_page' => 10,
        'post_type' => 'ad_listing',
        'orderby' => $orderby,
        'order' => $order,
        'paged' => $paged
    );
    

    where “$meta_query” is:

    $key = "your_custom_key"; //custom_color for example
    $value = "blue";//or red or any color
    $query_color = array('key' => $key, 'value' => $value);
    $meta_query[] = $query_color;
    

    and after that:

    query_posts($args);
    

    so you would probably get more info here:
    http://codex.wordpress.org/Class_Reference/WP_Query
    and you can search for “meta_query” in the page to get to the info

  2. You can use the WooCommerce Layered Nav widget, which allows you to use different sets of attributes as filters for products. Here’s the “official” description:

    Shows a custom attribute in a widget which lets you narrow down the list of products when viewing product categories.

    If you look into plugins/woocommerce/widgets/widget-layered_nav.php, you can see the way it operates with the attributes in order to set filters. The URL then looks like this:

    http://yoursite.com/shop/?filtering=1&filter_min-kvadratura=181&filter_max-kvadratura=108&filter_obem-ohlajdane=111

    … and the digits are actually the id-s of the different attribute values, that you want to set.