Это исходный пользовательский запрос:
Код: Выделить всё
// $roles is an array of user roles and may vary based on user input
// E.g.: $roles = array('editor', 'author');
$args_users = array(
'role__in' => $roles,
'meta_query' => array(
array(
'key' => 'my_meta_key',
'value' => 'my_meta_value',
'compare' => '='
)
),
'count_total' => true
);
$users = new WP_User_Query( $args_users );
$users_count = $users->get_total();
echo $users_count; // Returns 15.
Код: Выделить всё
$placeholders = implode( ', ', array_fill( 0, count( $roles ), '%s' ) );
$users_count = $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->users
LEFT JOIN $wpdb->usermeta AS um1 ON $wpdb->users.ID = um1.user_id
LEFT JOIN $wpdb->usermeta AS um2 ON $wpdb->users.ID = um2.user_id
WHERE um1.meta_key = 'my_meta_key' AND um1.meta_value = 'my_meta_value'
AND um2.meta_key = 'wp_capabilities' AND um2.meta_value IN ($placeholders)",
$roles
)
);
echo $users_count; // Returns 0. Should return 15.
Подробнее здесь: https://stackoverflow.com/questions/780 ... -sql-query
Мобильная версия