Open
Description
Is your enhancement related to a problem? Please describe.
The following query introduced in WordPress 5.9 runs extremely slow on our system (4-8 seconds):
SELECT wp_users.ID,wp_users.user_login,wp_users.display_name
FROM wp_users
INNER JOIN wp_usermeta
ON ( wp_users.ID = wp_usermeta.user_id )
WHERE 1=1
AND ( ( ( ( wp_usermeta.meta_key = 'wp_capabilities'
AND wp_usermeta.meta_value LIKE '%\"edit\\_posts\"%' )
OR ( wp_usermeta.meta_key = 'wp_capabilities'
AND wp_usermeta.meta_value LIKE '%\"administrator\"%' )
OR ( wp_usermeta.meta_key = 'wp_capabilities'
AND wp_usermeta.meta_value LIKE '%\"editor\"%' )
OR ( wp_usermeta.meta_key = 'wp_capabilities'
AND wp_usermeta.meta_value LIKE '%\"author\"%' )
OR ( wp_usermeta.meta_key = 'wp_capabilities'
AND wp_usermeta.meta_value LIKE '%\"contributor\"%' )
OR ( wp_usermeta.meta_key = 'wp_capabilities'
AND wp_usermeta.meta_value LIKE '%\"wpseo\\_manager\"%' )
OR ( wp_usermeta.meta_key = 'wp_capabilities'
AND wp_usermeta.meta_value LIKE '%\"wpseo\\_editor\"%' ) ) ) )
ORDER BY display_name ASC
This is executed by the quick edit code and runs while dispalys the posts or pages admin screens. Responsible is wp_dropdown_users().
Therefore we tried to use ElasticPress to speed up this call:
/**
* Use ElasticPress for very slow user queries (takes 4 - 8 seconds on prod!).
*/
add_filter('wp_dropdown_users_args', function ($query_args, $r) {
//enable ElasticPress
$query_args['ep_integrate'] = true;
return $query_args;
}, 10, 2);
However, this is not yet supported for the new features introduced in WordPress 5.9.
Describe the solution you'd like
Support the capability fields:
- capability
- capability__in
- capability__not_in
More details are listed here:
https://make.wordpress.org/core/2022/01/05/new-capability-queries-in-wordpress-5-9/
Designs
Describe alternatives you've considered
Additional context