
Dashboard tab showing index health per post type, batched reindexing, and the system status for the required PHP extensions.
Loupe Search improves WordPress core search by maintaining its own index for fast lookups, supporting typo tolerance, phrase matching, basic exclusion operators, and per–post-type customization.
"exact phrase"term -excluded)term1 term2 finds content with either termSee the Search API documentation for REST endpoint details.
Loupe Search registers two abilities via the WordPress Abilities API (WordPress 6.9+) so AI agents and automation tools can discover and use search functionality natively:
loupe-search/search — Typo-tolerant full-text search across indexed post types. Supports phrase matching, exclusion, and OR operators. Publicly accessible.loupe-search/get-post — Retrieve a single published post by ID. Publicly accessible.These abilities are discoverable through the standard WordPress Abilities registry and require no additional configuration. As of 1.2.0 the ability namespace is loupe-search; the legacy wp-loupe/search and wp-loupe/get-post abilities still work but are deprecated aliases.
Upgrading from the experimental MCP server? The MCP server, token service, and WP-CLI token commands were removed in 0.8.5. Use the Abilities API endpoints described above instead; no configuration migration is required.
These filters allow developers to customize Loupe Search’s behavior. As of 1.1.0 they use the loupe_search_* prefix; the old wp_loupe_* names still work but are deprecated and will be removed in a future major release.
loupe_search_db_path
Controls where the search index is stored.
Default: WP_CONTENT_DIR . ‘/loupe-search-db’
loupe_search_post_types
Modifies which post types are included in search.
Default: the post types selected on the settings screen, falling back to [‘post’, ‘page’]
loupe_search_posts_per_page
Controls search results per page.
Default: WordPress “Blog pages show at most” setting
loupe_search_index_protected
Controls indexing of password-protected posts. Receives false for protected posts and true for everything else; return true to index them anyway.
loupe_search_field_{$field_name}
Modifies a core post field before indexing. Does not fire for custom fields.
Example: The plugin uses loupe_search_field_post_content to strip HTML tags from content
loupe_search_schema_{$post_type}
Customizes the schema for a post type: which fields are indexed, their weight, and whether they are filterable or sortable.
loupe_search_is_safely_sortable_{$post_type}
Overrides whether a core post field may be used for sorting.
loupe_search_is_safely_sortable_meta_{$post_type}
Overrides whether a custom field may be used for sorting.
For signatures, defaults, and usage examples, see the filter documentation.