Get in touch
Catalogue · WordPress

Smart Product Filter for WooCommerce

Download for free
Version
v1.0.0
Compatibility
WooCommerce 6.0+ · WordPress 6.2+ · PHP 7.4+
Platform
WordPress
Smart Product Filter for WooCommerce

What each licence includes

Feature Free Pro
Faceted filter: category, attributes, price, stock, rating
Honest counters: its own facet stays unrestricted, the rest narrow down
Dedicated index table instead of queries against attributes and meta fields
Duplicate values ("12 V" / "12v" / "12 V.") are merged into one
Numeric values are sorted numerically and work as a range
Applies without a reload, filter state is kept in the URL
Mobile drawer, price slider with the real bounds of the selection
Price and stock come from wc_product_meta_lookup, matching sorting exactly
Filter SEO pages with their own H1, title and human-readable URL
Other combinations get noindex,follow and a canonical to the plain category
Doesn't touch the canonical if Yoast, Rank Math or AIOSEO is active

Smart Product Filter for WooCommerce is a faceted filter that doesn’t slow down on a large catalogue. Instead of querying attribute and meta tables, the module keeps its own flat index table of “product → value”, so adding new facets does not slow the query.

WooCommerce faceted filter with counters, chips and a price slider
“Green” is selected: its own facet stays untouched, the rest narrow down, and above there’s a chip for the selection and a “Reset all” button.

Honest counters

Each value shows a count of products that already accounts for the filters selected so far. Its own facet is not narrowed, though: after picking “Green”, the shopper still sees how many blue and red items there are, and can switch with one click instead of resetting everything and starting over.

Duplicate values get merged

Supplier price lists bring in “12 V”, “12v” and “12 V.” as three different attributes. The module merges them into one value, so the shopper sees a single checkbox instead of three. Numeric values are sorted numerically, not as strings, and work as a range.

Price, stock, rating

Price and stock are read from the wc_product_meta_lookup table — the same source WooCommerce uses for sorting — so there’s no mismatch between the filter and the listing. The price slider picks up the real bounds of the current selection.

Applies without a page reload

The filter updates the listing without reloading the page and writes its state into the URL, so the link can be sent or bookmarked. On mobile, the panel collapses into a drawer so it doesn’t eat up screen space.

SEO

Only the filter combination you’ve deliberately made an SEO page goes into the index: its own H1, title and human-readable URL. Every other combination gets noindex,follow and a canonical pointing to the plain category. If Yoast, Rank Math or AIOSEO is running on the site, the canonical stays with them — the module doesn’t interfere.

Compatibility

WooCommerce 6.0+, WordPress 6.2+, PHP 7.4+. Works with classic category archives and the shop page, and with HPOS. Filtering is built into the main query, so it works with themes that render the standard product loop. The widget can be placed in any widget area or via a shortcode.

What the admin gets

Facets are built from what’s already in your catalogue: category, product attributes, price, stock, rating. Nothing needs to be described separately — the module takes WooCommerce attributes as they are.

For each facet you configure how it’s shown to the shopper: checkboxes, a slider for numeric values, or a range. You decide the order of facets in the panel — whatever people actually filter by in your category goes first.

The index rebuilds itself whenever a product changes, and can be rebuilt completely with a single button — handy once, right after a big price-list import.

How it works, step by step

1. After installation, the module builds its own flat index table of “product → value”. This is a one-time operation; after that the index maintains itself.

2. The shopper ticks a checkbox in the filter. The query doesn’t go against wp_postmeta or the attribute tables — it goes against this index, a single simple SELECT instead of a pile of JOINs.

3. Counters next to the remaining values are recalculated from that same index, so they’re honest: they show what will actually be found, not the overall count of products with that value.

4. The listing updates without a reload, and the filter’s state is written into the URL.

5. A product changed in the admin or updated by import — the index for that product rebuilds automatically.

Why it’s faster

Standard WooCommerce filtering collects the result set through wp_postmeta and attribute taxonomies. Each added facet is another JOIN, and on a catalogue of tens of thousands of products the query turns into a multi-second one.

The flat “product → value” index removes this problem at the root: whether there are five facets or fifteen, the query structure doesn’t change. That’s why a shop with a large price list gets the most out of the module — on a 200-product catalogue you won’t notice the difference.

Free version and Pro

The free version is a fully-featured filter: all facet types, honest counters, merging of duplicate values, numeric ranges, a price slider with the real bounds of the selection, applying without a reload, state in the URL, a mobile drawer. No time limits and no ads in the admin.

Pro adds filter SEO pages: you pick a filter combination worth promoting (“yellow cabinets”, “laptops under 30,000”), and it gets its own H1, title and human-readable URL. Every other combination stays under noindex,follow with a canonical pointing to the plain category.

This is the main difference from a “theme filter”: a controlled handful of landing pages for low-frequency queries, instead of either a million junk URLs in the index or no filter pages in search at all.

Price

A Pro licence costs 990 UAH, for one site. The licence is annual: once it expires the module keeps working, only updates and support stop. We don’t promise “forever” — WooCommerce changes its query structure from version to version, and a filter without updates will eventually drift out of sync with the core.

Technical requirements

WordPress 6.2 or newer, WooCommerce 6.0 or newer, PHP 7.4 or newer. Works with HPOS, classic category archives and the shop page.

There are no separate hosting requirements: the index is a single ordinary MySQL table — it doesn’t need Elasticsearch, Redis, or a separate search service.

Under the hood

Filtering is built into the main product query rather than replacing it with its own. That’s why the module stays compatible with themes that render the standard WooCommerce loop, and doesn’t conflict with pagination or sorting.

Price and stock are read from wc_product_meta_lookup — the same table WooCommerce uses to sort products. So there’s never a situation where the filter says “in stock” while sorting by price shows something else.

The index updates on product save events, so it only adds load exactly at the moment of editing, not via a background cron once an hour.

How to install

1. Upload the archive under “Plugins → Add New → Upload Plugin” and activate it.

2. Wait for the index to be built — on first run the module offers to do this with a single button.

3. In the settings, put together the set of facets for your catalogue and set their order.

4. Add the filter widget to the category sidebar, or insert it with a shortcode wherever you need it.

5. If you bought Pro, add SEO pages for the filter combinations people actually search for.

Version history

1.0.0 — first release. Facets by category, attributes, price, stock and rating; a dedicated index table; honest counters with an unrestricted own facet; merging of duplicate values and numeric sorting; a price slider with the current selection’s bounds; applying without a reload and filter state in the URL; a mobile drawer; compatibility with HPOS. In Pro — filter SEO pages with their own H1, title and URL, noindex,follow on the rest of the combinations, and no interference with the Yoast / Rank Math / AIOSEO canonical.

Frequently asked questions

Do I need to rewrite the theme?

No. The filter is built into the main product query, so it works with themes that render the standard WooCommerce loop. The widget goes into a widget area or a shortcode.

Will it hold up on a large catalogue?

The filter conditions run against the module's own flat "product → value" index, not against attribute and meta tables, so adding new facets doesn't slow the query.

What happens with duplicate values from supplier price lists?

They get merged into one value: instead of three checkboxes "12 V", "12v" and "12 V.", the shopper sees one.

Do the counters account for already-selected filters?

Yes. Its own facet isn't narrowed, though — after picking "Green", the shopper sees how many blue and red items there are and switches with one click.

Won't the filter clutter Google's index?

No. Only the combination you've made an SEO page for goes into the index; the rest return noindex,follow and a canonical to the category. If Yoast, Rank Math or AIOSEO is running, the canonical stays with them.

How many sites can one key activate?

One. The licence is annual: once it expires the module keeps working, only updates and support stop.

Questions about the module?

Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.

@catcode_support

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about your task and we will prepare an estimate.

Order a custom module