web-dev-qa-db-fra.com

Afficher différents badges en fonction du rôle de l'utilisateur

Problème

J'ai une page d'auteurs et je dois afficher un badge différent pour les auteurs et les abonnés. Les auteurs sur le site ont certaines capacités qui diffèrent des abonnés et je voudrais afficher un badge différent en fonction de leur rôle.

Exemple

Ainsi, lorsque quelqu'un visite le site, que ce soit un auteur administrateur ou un visiteur abonné ... il voit le badge sur la page des auteurs qu'il visite en fonction de son rôle. S'ils regardent l'utilisateur dont le rôle est "Auteur", le badge est vert et si le rôle de l'utilisateur est "Abonné", le badge est rouge. Est-ce possible et comment puis-je le faire?

Ce code ne fait pas l'affaire :(

J'essayais de suivre cette logique, mais elle montre le badge en fonction de la personne qui regarde les auteurs et non celle de l'auteur à qui appartient la page. S'il vous plaît aider :)

 <?php if( is_author_of_current_page() &&  current_user_can('Author') ) { ?>

  green badge

 <?php } elseif( is_author_of_current_page() &&  current_user_can('Subscriber') ) { ?>

  red badge

 <?php } ?>
1
jimilesku

Vous pouvez utiliser get_queried_object pour obtenir des données dans la page de l'auteur en cours:

<?php

$author = get_queried_object();

// uncomment next line to see all author data
// print_r( $author );

if( in_array( 'author', $author->roles ) ) :

    echo "author";

elseif( in_array( 'subscriber', $author->roles ) ) :

    echo "subscriber";

endif;
2
Milo