web-dev-qa-db-fra.com

Obtenir tous les utilisateurs qui ont le privilège d'auteur

Quelqu'un peut-il me dire comment obtenir tous les utilisateurs disposant des privilèges d'auteur en interrogeant la base de données dans WordPress et en les classant par nombre de messages écrits par eux?.

J'utilise la requête suivante pour obtenir tous les utilisateurs de DB:

$authors = $wpdb->get_results(
    "SELECT ID, user_nicename from $wpdb->users ORDER BY display_name"
);  
1
MidhuN

Sauf si vous souhaitez extraire des données personnalisées de la base de données, vous n'aurez pratiquement jamais besoin d'utiliser la classe WPDB (ou son objet global, respectivement). Bien qu'il soit évidemment possible de faire les choses de cette façon aussi.

Juste pour être complet, si vous aviez une raison de ne pas utiliser une fonction plus abstraite, vous deviez employer JOIN dans la syntaxe de sélection, les rôles d’utilisateur résidant dans la table usermeta .

Mais il serait beaucoup plus simple d'utiliser la fonction get_users :

$args = array(
    'role'         => 'author',
    'orderby'      => 'display_name'
);
$authors = get_users( $args );

[EDIT] En ce qui concerne la question dans les commentaires (en fonction du nombre de posts):

Utilisez 'post_count' comme argument pour le paramètre 'orderby' (et lisez la page de codex liée, qui vous donne tous les arguments possibles).

3
Johannes Pille
$args = array();
$args['fields'] = array( 'ID', 'display_name' );
$args['role'] = 'author';
$authors= get_users( $args );

Référence: http://codex.wordpress.org/Function_Reference/get_users

1
Rajeev Vyas