WooCommerce Filter Not Working on Homepage or Custom Page? Here’s Why

Baljinder
Sep 21, 2026 Max 24 min read

Short answer

WooCommerce’s built-in filters only work on the shop page. Nothing you can change in the settings will make them filter a page you built yourself.You need a filter that either attaches to the grid you already have or brings its own results.
Jump straight to the fixes →

The symptoms

5 signs your WooCommerce filter is not working on a page

You built a page of your own — a homepage, a landing page, a “Summer Sale” page. You added a product filter, just like the one on your shop page. You click it and nothing happens. The web address at the top changes. The products stay exactly the same.

Nothing is broken, and you did not do anything wrong. This is how WooCommerce works out of the box. See if one of these matches what you are seeing:

You added the Product Filters block to a page and it shows a heading but no options at all — no colours, no sizes, nothing to tick.
You added an older filter widget or block to a page. The options show, you tick one, the page reloads — and every product is still there.
You turned on "Sync with current query" to fix it, and now the page shows nothing at all.
You are using Elementor, Divi or another page builder and its filter does nothing to your product grid.
Your filter works on one category page but you have to rebuild it for every other category.

They are all the same problem wearing different clothes. Here is what is actually going on.

The cause

Why WooCommerce filters only work on the shop page

WooCommerce filters change the web address, and only the page’s main list reads it. On the shop page the main list is the products. On any other page the main list is the page, and the product grid inside it is ignored.

In plain English

Every page on your site loads one main list of things. That main list is what the page is for.

On your shop page, that main list is the products. So when you tick a filter and the web address changes, the shop page reads the address, sees “only blue ones please”, and loads only the blue products.

Your own page is different. The main list is the page itself. The product grid you dropped onto it is just a block sitting inside the page — like a picture hanging on a wall. The filter shouts its instructions at the page. The page listens. The product grid inside it never hears a thing.

A filter changes the web address. Only the page whose main list is the products will act on it.

The proof: one web address, two different results

We built a small test store with nine products and one colour attribute — three blue, three red, three green. Then we put the exact same filter in two places and visited both with the same web address.
Shop page — filter works /shop/?filter_color=blue 3 of 9

Only the three blue products stayed. The count updated to “Showing all 3 results”.

Your own page — filter ignored /filter-test/?filter_color=blue 9 of 9

Every product still there. Blue, red and green, exactly as before the filter was applied.

Same filter. Same web address. Same products. The shop page read it and the custom page did not. That is the whole problem in one line.

Every setup we tried

What happens in each setup, tested on WooCommerce 11.1

We tested four setups on a fresh install so you do not have to. Here is exactly what each one did.

Test 1 — the control

WooCommerce filters on the shop page

Our baseline. Ticked "Blue", the three blue products were left, everything behaved. This is what the other three setups are measured against.

Works

Test 2

Product Filters block on a normal page: no options appear

The filter heading appeared, but the tick boxes were completely empty. No Blue, no Red, no Green. So for a lot of people the complaint is not "clicking does nothing" — there is nothing to click in the first place.

Shows no options

Test 3

Legacy filter block on a page: the URL changes, the products don't

This one did show its options. We ticked "Blue", the page reloaded, the box stayed ticked and the address said filter_color=blue — and all nine products were still sitting there. This is the one most people describe.

Address changes, products don't

Test 4

"Sync with current query" on a page: everything disappears

This is the setting everyone tries next, and it makes things worse. The page came back completely blank — no filter and no products at all. Because the page is now trying to show "whatever this page lists", and a page does not list products.

Empty page

One myth we can rule out

Setting your shop as the homepage is fine. It does not break filters. We tested it and they worked normally. Older advice online still says otherwise — it is out of date.

The fixes

How to fix WooCommerce filters on a custom page: 4 options

Four options, from the quickest patch to the one that actually solves it. Each has a trade-off, so pick the one that matches how much freedom you need.

01 Use the shop or product category page instead

Stop building your own page. Use the shop page or a product category page, and change how it looks instead of where it lives.

Trade-off: you cannot add your own sections above or below, and you get one product grid per page. Fine for a plain store, frustrating for a landing page.

02 Link to pre-filtered shop pages

Put buttons on your page that go straight to a filtered shop page — “Shop Blue Shirts”, “All Sale Items”, and so on.

Trade-off: this is not really filtering. The visitor leaves your page, and to change their mind they have to go back. Good for a few shortcuts, not for browsing.

03 Have a developer change the page query

A developer can rewrite what your page loads so the product grid becomes the main list, and the filter can then reach it.

Trade-off: it is custom code. It fixes one page only, it breaks page numbers easily, and somebody has to look after it every time your theme or WooCommerce updates.

04 Use a filter plugin built to handle this

A filter made for this either attaches itself to the product grid already on your page, or brings its own results with it. Either way it stops depending on the page’s main list, so it works wherever you put it.

Trade-off: you are adding a plugin. In return you get filtering on any page, no custom code, and nothing to maintain when WooCommerce updates.

Our plugin

How Category AJAX Filter adds filters to any page or category page

Category AJAX Filter was built for this exact problem. Shop page, category page, homepage, landing page — the filter behaves the same on all of them, because it never relies on the page’s main list.

1
Keep the grid you already have Your theme, Elementor, Divi or WooCommerce carries on rendering the products. You add the filter's shortcode to the page and it finds that grid on its own. If the auto-detect misses, you paste in a CSS selector for the results area — something like ul.products. Your layout does not change.
2
Let the plugin build the listing You design the filter and the result item in the builder, and the plugin renders both. The listing is its own, so it works on a homepage, a landing page, or anywhere that had no products before.

What else it does

One filter, every categorySwitch on the current category option and add the shortcode to your category template once. It adapts to whichever category the visitor is on, including ones you add later.
AI searchSearch by keyword across titles, descriptions and custom fields — or turn on AI search, which matches on meaning rather than exact words.
No reloadsOnly the results area updates when someone ticks a box. The rest of the page stays where it is.
Not just productsBlog posts and custom post types work too, not only WooCommerce.

There is a free version to start with, and a live demo where the same filter runs on a shop page, a category page and a plain landing page so you can see the difference for yourself.

Quick answers

FAQs

Why do my filters only work on the shop page?

Because the shop page’s main job is listing products, so it reads the filter from the web address. Any other page’s main job is showing that page, so the product grid inside it never sees the filter.

Can I put WooCommerce filters on my homepage?

The built-in ones will appear, but they will not filter the grid you placed there. For a homepage you need a filter that either attaches itself to that grid or brings its own results with it. Both approaches work; the built-in blocks do neither outside the shop template.

Why does my filter show no options at all?

Two common reasons. On a custom page the newer Product Filters block often renders empty, as in our test. The other cause is the attribute itself — only global attributes (Products → Attributes) can be filtered. One added on a single product’s edit screen cannot.

How do I add one filter that works on every category page?

You need a filter with a “current category” setting, so it reads whichever category the visitor is on instead of being tied to one. Add its shortcode to your category template once and it adapts to every category, including ones you add later.

Why does my page reload every time I click a filter?

The older WooCommerce filters were never instant. They work by changing the web address and loading the whole page again. An AJAX filter replaces only the results area, so the rest of the page stays where it is.

Why doesn't Elementor's filter work with my product grid?

Same reason as everything else here. A Loop Grid built on its own custom query is not the page’s main list, so the Taxonomy Filter has nothing to act on. There are several long-running reports about this on Elementor’s issue tracker. The way round it is a filter that attaches to the grid itself rather than to the page.

Every result on this page was reproduced on a clean WordPress install running WooCommerce 11.1 and the Twenty Twenty-Five theme, with nine sample products and one global colour attribute.

Recommended Articles

Create Advanced AJAX Filters for Custom Post Types

Create Advanced AJAX Filters for Custom Post Types

Custom Post Types power directories, real estate websites, portfolios, event listings, and business platforms. As your content scales, users need a smarter, faster way to find what they're looking for — without the frustration of full page reloads.Default WordPress...