web-dev-qa-db-fra.com

Comment obtenir tous les utilisateurs avec des capacités de rôle Auteur?

J'ai besoin de récupérer la liste de tous les utilisateurs qui sont des auteurs (avec des capacités d'auteur)

get_users permet de récupérer les utilisateurs avec des rôles, mais si les utilisateurs sont filtrés avec un rôle d'auteur, il ignore les utilisateurs avec les rôles admin et editor (mais ils peuvent également créer des publications).

J'ai donc besoin d'un autre moyen pour extraire tous les utilisateurs ayant la capacité de rôle d'auteur (ils peuvent être de l'administrateur, de l'éditeur ou de tout autre rôle personnalisé doté de la fonction d'auteurs).

Pour être plus précis - Besoin de tous les utilisateurs dotés de la fonctionnalité "publish_posts".

1
Anand

Voici un moyen de collecter des rôles avec la capacité publish_posts:

$roles__in = [];
foreach( wp_roles()->roles as $role_slug => $role )
{
    if( ! empty( $role['capabilities']['publish_posts'] ) )
        $roles__in[] = $role_slug;
}

et ensuite nous pouvons interroger les utilisateurs avec ces rôles:

if( $roles__in )
    $users = get_users( [ 'roles__in' => $roles__in, 'fields' => 'ids' ] );

où nous pourrions avoir besoin de la pagination pour un grand nombre d'utilisateurs.

On peut également parcourir peu utilisateurs et vérifier avec:

user_can( $user, 'publish_posts' )

Voir docs ici .

3
birgire

Fondamentalement, 3 rôles ont le droit de publier des publications: "Administrateur", "Éditeur" et "Auteur", sauf si vous ajoutez des rôles personnalisés.

Vous pouvez donc spécifier un tableau de ces 3 dans votre fonction get_users. Quelque chose comme ça:

get_users( array(
        'role__in'     => array('administrator', 'editor', 'author'),
    ) );

Cela vous donnera les détails de l'utilisateur avec ces rôles dans un tableau que vous pouvez utiliser comme commodité.

J'espère que cela t'aides.

Merci

2
Sid

Utilisez get_role() pour obtenir les capacités de n’importe quel rôle de l’utilisateur dans votre code.

0
Mostafa Soufi