web-dev-qa-db-fra.com

Comment compter la requête get_users?

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.

1
user1893

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);
1
Bainternet

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
1
Radley Sustaire

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.

0
Gruffy

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 .

0
Raj