Skip to content

Post Relation Search ​

Upgrades Voxel's "Post relation" search filter into a much more capable filter: type-to-search, opt-in multi-select with ANY/ALL matching, live result counts, dropdown ordering, scope, and per-widget curation.

Updated in 1.7.4

This function received a major upgrade. Existing filters keep their exact behavior — a searchable single-select dropdown — until you turn on the new options per filter in the post type editor.

Overview ​

Out of the box, Voxel's relation filter is a scroll-only, single-select list. With this function enabled, every relation filter gains AJAX type-to-search, and the post type editor gains new per-filter options for multi-select, matching behavior, ordering, live counts, and scope.

Key Features ​

  • Type-to-search — AJAX search across post titles (and user display names for profiles)
  • Multi-select — let users pick several related posts, shown as removable chips
  • ANY / ALL matching — results relate to at least one selected post, or to every one
  • Adaptive counts — each option shows how many results it would return under the current search; empty options hide
  • Dropdown ordering — title A→Z / Z→A, newest, or oldest
  • Scope — offer any published post, or only the current user's own posts
  • Per-widget curation — per search form, hide specific posts or restrict the list to specific posts
  • "Load more" pagination for long lists

Setup Instructions ​

Step 1: Enable the Function ​

  1. Navigate to Voxel Toolkit → Functions and enable Post Relation Search
  2. Type-to-search activates immediately on all existing relation filters — nothing else changes

Step 2: Turn On the New Options (per filter) ​

  1. Go to Voxel → Post Types → your post type → Filtering
  2. Open (or add) a Post relation filter
  3. Configure the new options:
OptionDescriptionDefault
Allow selecting multiple posts?Turns the filter into a multi-select with chipsOff
Multiple selections matchANY of the selected posts, or ALL of themAny
Order dropdown posts byTitle A→Z / Z→A, newest, oldestTitle
Enable adaptive display?Live result counts per option; zero-result options hideOff
ScopeAny author's posts, or only the current user'sAny
PlaceholderText shown in the empty filter—

Per-Widget Options (Elementor) ​

Each Search Form widget's relation filter also offers:

OptionDescription
Hide specific postsComma-separated post IDs excluded from this dropdown
Restrict to specific postsThe dropdown lists only these IDs
Show selected chipsShow removable chips for selections inside the popup

Use Cases ​

Large Directories ​

Thousands of related posts stay usable — type a few letters instead of scrolling.

"Show events at any of these three venues" — or with ALL matching, posts related to every selected item.

Dashboards ​

Scope set to "current user" turns the filter into "filter by my own listings."

Curated Landing Pages ​

Restrict a page's filter to a handpicked set of featured partners.

Troubleshooting ​

Search returns nothing ​

  • The typeahead uses a MySQL FULLTEXT index on post titles; Voxel normally creates it. If an admin notice reports a missing index, re-run Voxel's database setup
  • MySQL fulltext search needs at least 3-4 characters

Multi-select isn't available ​

  • Enable Allow selecting multiple posts? on the filter itself in the post type editor — it's off by default so existing filters don't change

Adaptive counts don't update ​

  • Adaptive display is per filter — enable it in the filter's options
  • Counts refresh after each search change; give slow hosts a moment

Options missing from the dropdown ​

  • Check the widget's Restrict to specific posts / Hide specific posts settings
  • With adaptive display on, options with zero results under the current search are hidden by design

Built by Code Wattz.