diff --git a/src/wp-admin/includes/ajax-actions.php b/src/wp-admin/includes/ajax-actions.php index 1df84f204ecb8..1447a6daeca6a 100644 --- a/src/wp-admin/includes/ajax-actions.php +++ b/src/wp-admin/includes/ajax-actions.php @@ -11,6 +11,34 @@ // No-privilege Ajax handlers. // +/** + * Filters menu quick search to only search post titles. + * + * Modifies the search query for the menu quick search AJAX action + * to search only in post_title column for a better UX + */ +function wp_ajax_nopriv_menu_quick_search( $args ) { + if ( isset( $_POST['action'] ) && 'menu-quick-search' === $_POST['action'] ) { + add_filter( + 'posts_search', + function ( $search, $query ) { + global $wpdb; + + if ( ! empty( $search ) && isset( $query->query_vars['s'] ) ) { + $search = $wpdb->prepare( " AND {$wpdb->posts}.post_title LIKE %s ", '%' . $wpdb->esc_like( $query->query_vars['s'] ) . '%' ); + } + + return $search; + }, + 10, + 2 + ); + } + + return $args; +} +add_action( 'wp_ajax_menu-quick-search', 'wp_ajax_nopriv_menu_quick_search' ); + /** * Handles the Heartbeat API in the no-privilege context via AJAX . *