J'ai une exigence assez spécifique pour afficher un texte différent dans une étiquette de champ sur la page de profil de l'utilisateur en fonction du rôle de l'utilisateur actuel. Je n'arrive pas à comprendre comment vérifier si l'utilisation actuelle est un "auteur".
Je cherche une fonction comme:
is_user_in_role($user, "author");
J'imagine que c'est assez simple, mais j'ai trop longtemps cherché sans réponse, alors j'ai pensé le poster ici.
Si vous n'en avez besoin que pour l'utilisateur actuel current_user_can()
accepte les rôles et les fonctionnalités.
UPDATE: Il n'est plus garanti que le fait de passer un nom de rôle à current_user_can()
fonctionne correctement (voir # 22624 ). Au lieu de cela, vous voudrez peut-être vérifier le rôle de l'utilisateur:
$user = wp_get_current_user();
if ( in_array( 'author', (array) $user->roles ) ) {
//The user has the "author" role
}
Je cherchais un moyen d'obtenir le rôle d'un utilisateur à l'aide de son identifiant. Voici ce que je suis venu avec:
function get_user_roles_by_user_id( $user_id ) {
$user = get_userdata( $user_id );
return empty( $user ) ? array() : $user->roles;
}
Ensuite, une fonction is_user_in_role()
pourrait être implémentée de la manière suivante:
function is_user_in_role( $user_id, $role ) {
return in_array( $role, get_user_roles_by_user_id( $user_id ) );
}
Vous pouvez également simplement créer un nouvel objet utilisateur:
$user = new WP_User( $user_id );
if ( ! empty( $user->roles ) && is_array( $user->roles ) && in_array( 'Some_role', $user->roles ) ) {
return true;
}
Vous ne savez pas dans quelle version get_user_roles_by_user_id
a été supprimée, mais ce n'est plus une fonction disponible.
Voici une fonction qui accepte un utilisateur et un rôle pour une plus grande flexibilité:
function my_has_role ($ user, $ role) { $ roles = $ user-> roles; return in_array ($ rôle, (tableau) $ utilisateur-> rôles); } if (mon_has_role ($ utilisateur, 'un_role'))) { //faire des trucs }