Until August, letting visitors search or filter a Divi blog on the front end meant a third-party plugin, a shortcode, or hand-written AJAX. Divi 5's new Post Filter module does it natively. Because it sits on top of the Loop Builder, it works with any looped element — a blog, a portfolio, a team directory, a WooCommerce product grid — and it filters without a page reload if you want it to. This guide walks through the exact build, setting by setting. It's the same approach I use on client sites as a Divi 5 specialist.
Before you start
The Post Filter module does not create content. It narrows what an existing Loop returns. If the element you want to filter isn't a Loop yet, the module shows a "Select a Loop" message and does nothing. So Phase 1 is the Loop, and it has to work on the front end before a single filter goes on the page.
Phase 1
Build the Loop You Want to Filter
You can loop a Section, Row, Column or a single module. For a blog, the simplest reliable setup is a Row with one Column, looped, containing a Post Title, a Post Featured Image and a Post Excerpt module wired to dynamic content.
1
Add the element and enable the Loop
Select the row (or column) → Content → Loop → enable Loop Element.
2
Set the query
Query Type → Post Type → choose Posts (or your custom post type). Set the number of results per page and the default ordering. Leave the rest at defaults for now — the filter will override them at runtime.
3
Give the looped element an Admin Label
Advanced → Meta → Admin Label → something like "Blog Results". The Post Filter module lists loops by this label, so name it now and you won't be guessing between three unnamed rows later.
4
Design one item with dynamic content
Inside the looped column, add your modules and point each one at dynamic content (Post Title → Dynamic → Post Title, and so on). You're designing a single card; the Loop repeats it for every result.
5
Save and check the front end
Publish and load the page. Confirm the loop shows real posts with the right ordering and count. Anything that's wrong here will look like a filter bug later, so fix it now.
Phase 2
Add the Post Filter Module and Point It at the Loop
1
Insert the module
Add a Row above (or beside) the loop → add a module → choose Post Filter. It arrives with four starter items already inside: a Search field, a Category checkbox list, a Reset button and an Apply button.
2
Choose the target
Content → Target → Target Loop → pick "Blog Results" from the dropdown. The "Select a Loop" placeholder disappears and the starter items become live.
3
Pick the Apply Mode
Content → Apply Mode. Two options, and this is the one decision that changes how the page feels — see the table below.
| Apply Mode | What happens |
| Submit (default) | Nothing changes until the visitor clicks Apply. The page reloads with the filters written into the URL. Best for long lists, many filters, or when you want shareable, bookmarkable filtered URLs. |
| Auto | The loop updates the moment a control changes. No reload, no Apply button needed. Best for short blogs, portfolios, anything where instant feedback matters more than a clean URL. |
4
Set the Relation
Content → Relation → And (default: every active filter must match) or Or (any one match is enough). For a blog with categories plus a search box, And is almost always what visitors expect.
Phase 5
Test It Like a Visitor
Search for a known wordPick a word you know is in exactly one post. One result?
Combine a category and a searchWith Relation on And, you should get the intersection, not the union.
Sort both waysTitle ascending, then descending. Confirm the order actually flips.
ResetEvery control clears and the loop returns to its default state.
Filter down to nothingConfirm the empty state is acceptable, and consider adding a "no results" message to the Loop.
Share the URLIn Submit mode, paste the filtered URL into a private window. The same filtered results should load — that's the built-in shareable-link behavior.
Repeat on tablet and phoneReal widths, not the builder's preview alone.
Worth knowing
Things That Will Save You an Afternoon
- Multiple Post Filter modules can target the same loop and they stay in sync. A search box in the hero and a category bar above the grid is a legitimate layout.
- Filters never leak across loops. Two loops on one page, two independent filter forms.
- Pagination stays in sync. A Pagination module on the same loop resets to page one whenever a filter changes.
- Taxonomy, user and menu loops are limited. They only support Text, Order By, Order, Submit and Reset — no Select, Radio or Checkbox items.
- Changing the Target Loop to an incompatible type resets any affected items back to Text. Set the target first, then build the items.
- Custom fields with thousands of unique values trigger a warning in Automatic mode. Switch that item to Manual options or pick a different field.
Quick Reference — Key Settings
Loop
Row or Column, Loop Element on, Post Type = Posts, Admin Label "Blog Results"
Apply Mode
Submit for shareable URLs · Auto for instant filtering
Items
Text (search) · Category as Select · Order By (Date, Title) · Order · Reset · Submit (drop in Auto mode)
Options Method
Automatic — cached 24h, use Clear Cached Options after adding terms
Buttons
Site button preset