Je cherchais haut et bas un moyen de compter le nombre de résultats d'une requête get_users.
La plupart de ce que j'ai trouvé est de compter le nombre total de messages dans une requête, mais rien pour compter le nombre total d'utilisateurs dans la requête get_users.
Est-ce que quelqu'un peut me le signaler? Merci beaucoup.
lorsque vous utilisez get_users()
, il récupère un tableau d'utilisateurs correspondant aux critères donnés dans $args
, ce qui signifie que vous pouvez utilisez simplement la fonction count()
de PHP, par exemple:
$users = get_users($args);
$number_of_users = count($users);
Cela ressemble à la bonne façon. Semblable à la réponse de Gruffy, mais sans les étapes supplémentaires.
Notez que get_users()
utilise également WP_User_Query, mais supprime le résultat total. Par conséquent, cette méthode n'est pas plus lente.
$user_query = new WP_User_Query(array(
'number' => 15,
'paged' => 1
));
$users = (array) $user_query->get_results(); // return: Array of WP_User objects
count($users); // return: 15
$user_query->get_total(); // return: 86
Voici comment j'ai implémenté ceci:
function getUsers($args = array(), $count = false)
{
// Default behaviour is to return full user information
$method = 'get_results';
// If count is true then change the WP_User_Query method
// and limit the fields SELECT'd to 'ID' to speed up the query
if($count === true) {
$method = 'get_total';
$args['fields'] = 'ID';
}
$userQuery = new WP_User_Query($userArgs);
return call_user_func(array($userQuery, $method));
}
Usage:
$args = array('role' => author,
'meta_key' => 'foo',
'meta_value' => 'bar'
);
// Returns (array) WP_User objects (a la get_users())
$users = getUsers($args);
// Returns (int) number of of users matched by $args
$count = getUsers($args, true);
En plus d'être plus compact/réutilisable que $users = get_users($args); $count = count($users);
, cela garantit que si tout ce que vous voulez est le nombre total, il obtiendra le minimum requis de la base de données pour y parvenir.
Essayez la fonction ci-dessous pour obtenir le nombre total d’utilisateurs, et le nombre d’utilisateurs basé sur les rôles d’utilisateur, dans un tableau:
count_users();
La sortie vient comme ceci:
Array (
[total_users] => 32
[avail_roles] => Array (
[administrator] => 1
[subscriber] => 28
[sub_administrator] => 1
[editor] => 2
)
)
Plus d'informations peuvent être trouvées ici .