Je souhaite afficher le rôle de l'auteur sur l'archive et la page de l'auteur en dehors de la boucle. J'ai trouvé ce code sur le débordement de la pile et cela fonctionne correctement dans la boucle.
function get_author_role()
{
global $authordata;
$author_roles = $authordata->roles;
$author_role = array_shift($author_roles);
return $author_role;
}
Dans le modèle utilisant le code ci-dessous
echo get_author_role()
Mais quand j'ajoute ceci à la page d'archive et d'auteur, c'est un message d'avertissement appelé
Warning: array_shift() expects parameter 1 to be array, null given in
Comment résoudre ceci?
$authordata
n'est pas disponible avant la création du premier message (avant la première the_post();
).
Mais toutes les données dont vous avez besoin sont déjà présentes sur une archive d'auteur: dans get_queried_object()
.
C'est un WP_User Object
sur l'archive de l'auteur.
print '<pre>' . htmlspecialchars( print_r( get_queried_object(), TRUE ) ) . '</pre>';
Résultat:
WP_User Object
(
[data] => stdClass Object
(
[ID] => 2
[user_login] => toscho
[user_pass] => $P$BO6.B4TIhxnKspIlxXHJCqa.M4I3v01
[user_nicename] => toscho
[user_email] => [email protected]
[user_url] =>
[user_registered] => 2011-12-25 15:20:12
[user_activation_key] =>
[user_status] => 0
[display_name] => toscho
)
[ID] => 2
[caps] => Array
(
[author] => 1
)
[cap_key] => test_capabilities
[roles] => Array
(
[0] => author
)
[allcaps] => Array
(
[upload_files] => 1
[edit_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[read] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[delete_posts] => 1
[delete_published_posts] => 1
[author] => 1
)
[filter] =>
)
Ceci imprimera donc le premier rôle de l’auteur actuel:
! empty ( get_queried_object()->roles )
and print ucfirst( get_queried_object()->roles[0] );