kaiseki / wp-menu-quick-search-title-only
Restrict the WordPress admin menu quick-search to title-only matching, with configurable post types and result count
Package info
github.com/kaisekidev/kaiseki-wp-menu-quick-search-title-only
pkg:composer/kaiseki/wp-menu-quick-search-title-only
Requires
- php: ^8.2
- kaiseki/config: ^2.0
- kaiseki/wp-hook: ^2.0
- psr/container: ^1.1 || ^2.0
Requires (Dev)
- bnf/phpstan-psr-container: ^1.1
- kaiseki/php-coding-standard: ^1.0
- maglnet/composer-require-checker: ^4.0
- php-stubs/wordpress-stubs: ^6.2
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^11.0
- roave/security-advisories: dev-latest
- roots/wordpress-core-installer: *
- roots/wordpress-no-content: @stable
- szepeviktor/phpstan-wordpress: ^2.0
- thecodingmachine/phpstan-safe-rule: ^1.4
This package is auto-updated.
Last update: 2026-06-02 23:43:42 UTC
README
Restrict the WordPress admin menu quick-search to title-only matching, with configurable post types and result count.
A single kaiseki/wp-hook HookProviderInterface (UpdateRequest) that hooks into the admin menu
"quick search" AJAX request (action=menu-quick-search). When the request is relevant it forces the
underlying WP_Query to match the search term against post_title only — via a posts_where clause
that adds a LIKE on wp_posts.post_title — instead of WordPress' default broader search, and caps
the number of results returned.
Installation
composer require kaiseki/wp-menu-quick-search-title-only
Requires PHP 8.2 or newer.
Usage
Register ConfigProvider with your laminas-style config aggregator and activate the provider via
kaiseki/wp-hook. ConfigProvider wires UpdateRequest as a hook provider and supplies its default
config:
use Kaiseki\WordPress\MenuQuickSearchTitleOnly\ConfigProvider; return (new ConfigProvider())();
Tune behaviour through the menu_quick_search_title_only config key:
return [ 'menu_quick_search_title_only' => [ // Post types whose quick-search should be title-only. Empty means // "apply to every quick-search request". 'post_types' => ['post', 'page'], // Maximum number of results returned by the quick search. 'posts_per_page' => 20, ], ];
When post_types is non-empty, the filter only applies to requests whose type matches one of the
configured post types (matched against the quick-search-posttype-<type> markers WordPress sends); an
empty list applies the title-only behaviour to all quick-search requests.
Development
composer install
composer check # check-deps, cs-check, phpstan
composer phpunit
License
MIT — see LICENSE.