To add filter widgets, access Appearance > Widgets and add them in one of the following sidebars:
- Shop Sidebar . Plain simple sidebar eg: Amsterdam Demo
- Filter Panel. Filters will be shown in a side panel that opens on clicking the FILTER button on the top right side of the products eg: London Demo .
- Filter Top Bar . Will show the filters (as dropdowns) before the product listing eg: Melbourne Demo .
For WordPress’ 5.8+ Block layout here’s a quick screenshot https://d.pr/i/6TqTbV .
All the sidebars above will be shown in the frontend automatically only when they have widgets inside them.
- Filter by Attribute . Displays attributes, styled depending on their attribute type. Read more on Variation Swatches.
- Filter by Category;
- Filter by Price;
- Filter “In Stock” items;
- Filter “On Sale” products;
- Filter “Featured” products;
- Filter by Tags;
- Filter by Keywords (Search);
- Filter by Custom fields (Meta data) . How to work with this widget;
- Filter by custom taxonomy. Used when you use a plugin that uses a custom taxonomy and want to make it available for filters;
- Active Filters . Displays the active filters that are in use, along with a reset button.
All of the above widgets have the option to either display as a list (and depending on the type, either as colored boxes or buttons) and as dropdowns.
For WordPress’ 5.8+ Block layout here’s a quick screenshot https://d.pr/i/4EqHKj .
- Filter Products by Attribute
- Filter Products by Rating
- Filter Products by Price
- Product Categories (not a filter widget but good enough to use)
By default, this button is shown and will try to open the Shop Sidebar, as an off-canvas panel.
To change which sidebar to open, access Customizer > WooCommerce > Ajax filters and make sure to pick the choice you want eg: https://d.pr/i/6ccCM2 .
By default filtering is triggered when a filter item has been chosen. You can change this by showing an “Apply filters” button which will wait the visitor to pick multiple items and then by hitting the button, will show results.
To enable, access Customizer > WooCommerce > Ajax filters and make sure to enable the option eg: https://d.pr/i/9179t6 .
To hide a widget on a specific product category, try editing the Rey Filter widget and in the Advanced tab, locate the Show/Hide option eg: https://d.pr/i/cFeDEY .
Usually filtering widgets are limited to WooCommerce catalog pages, which are auto-generated. Elementor edited pages are not, they’re just pages. This is an important difference between them. So to make possible the use of filtering widgets into an Elementor page, please follow these steps:
1. Enable filtering in Product grid element.
While editing the page in Elementor, you’ll likely end up using the Product Grid element. Make sure to enable the “Page uses filters” option, eg: https://d.pr/i/vL8nnC (you’ll need to enable Transform to Archive option first) .
This will add a meta flag to this page to let it know that it’ll be used as a product catalog and it’s ok to load the filters.
The purpose of this switcher is to prevent some code from running at anytime, thus improving load performance.
2. Use the Sidebar element
First, please access Appearance > Widgets and make sure to add filtering widgets in one of the sidebars positions.
Now back in Elementor, make sure to create a new column, and inside it add the Sidebar element and choose the Sidebar position you added the widgets into.
*In the future i will try to make adding the widgets directly, but at the moment only Sidebar is possible.
If you want to create custom sidebar positions, you could use this php snippet https://d.pr/n/5oZ2rV and register as many sidebar positions as you want.
Access Customizer > WooCommerce > Ajax Filters and at the very bottom please register the queries eg: https://d.pr/i/ncwB2F . You will need to label it and add a meta_key, meta_value and comparison operator.
After you registered the queries, please access Appearance > Widgets and create a new Filter by Custom Fields widget.
You will need to choose which registered queries to display eg: https://d.pr/i/cR4ro5 .
Please head over to Customizer > WooCommerce > Product catalog – Content and make use of the Custom Sidebars control eg: https://d.pr/i/p8BD5r , which can support multiple sidebars assigned for different categories or attributes and inherit an existing sidebar properties.
This happens because products need to have the parent categories selected as well. For example in this screenshot, https://d.pr/i/CyzhP4 , as you can see Men is also checked.
I tried making this automatic but unfortunately at the moment it’s not doable and it would involve extra queries to determine the parent and child categories which would slow down filtering.
What i propose instead is to make use of this code snippet https://d.pr/n/HHF14l , which can be added into the child theme. This code is executed when a product is saved and it will grab the current selected categories parents and check them.
If you want to force a re-save/update of all products in the store, you can make use of this code here https://d.pr/n/hdt4xU , but it’s very, very, very important to:
- make a database backup first
- after adding the code, refresh the backend and wait to load, and then make sure to remove it. This code is only meant to run once because it iterates all products and forces an update.
This most likely happens because when the attributes were selected in the product, they were all added, while only just a few are actually used in Variations.
Try to keep only the attributes that will be used eg: https://d.pr/i/M5SZ1m .
- Try accessing Customizer > WooCommerce > Ajax filters and enable Fix Out of stock variables eg: https://d.pr/i/aWf0aI
- Access WooCommerce > Settings > Products > Inventory and make sure out of stock products are hidden https://d.pr/i/z3R82G .
- Access WooCommerce > Status > Tools and regenerate lookup tables eg: https://d.pr/i/kucqXE .
Rey has the built-in option to fix Out of stock variables display when filtering (check the previous point). However in case of large stores with lots of products which may contain lots of out of stock variations, i suggest adding this code snippet https://d.pr/n/sgn8DC into the child theme’s functions.php . This will slightly slow down the query, however it will fix the issue.
Access Rey Theme > Settings > Misc options and enable “Widgets Page – Blocks Layout”.
Excluding categories from the list
To exclude specific categories from the Categories widget list, please use this code snippet https://d.pr/n/87QZYC and make sure to modify the categories IDs array.
Excluding “uncategorized” category from the list
To exclude the “Uncategorized” category from the widget list, please use this code snippet https://d.pr/n/1ngsMs , without any extra changes.
When inside a top level category, hide sibling parents
When in a top level category, if you need to hide the sibling top level categories, try using this php snippet https://d.pr/n/sv0CeP .
Excluding specific attributes from the list
If you want to excclude a specific attribute from the list, please copy this code snippet https://d.pr/n/aUnfwS and paste it into the child theme’s functions.php .
Inside it, please adjust the attribute taxonomy slug eg: “pa_color”. Usually it’s “pa_” + the_attr_name .
Also, make sure to adjust the terms (attribute) ids array.