Come visualizzare il ruolo dell'utente in WordPress
Come visualizzare il ruolo dell'utente nella pagina autore.
Ho creato un ruolo personalizzato (gruppo) e voglio visualizzare il ruolo dell'utente sotto i post e nell'elenco autori.
Ho provato questo codice ma non funziona perché richiama current_user e mostra il ruolo dell'utente corrente in tutti i profili degli autori
<?php
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
if ($user_role == 'administrator') {
echo 'Amministratore';
} elseif ($user_role == 'editor') {
echo 'Editore';
} elseif ($user_role == 'author') {
echo 'Autore';
} elseif ($user_role == 'contributor') {
echo 'Collaboratore';
} elseif ($user_role == 'subscriber') {
echo 'Sottoscrittore';
} else {
echo '<strong>' . $user_role . '</strong>';
}
?>
Come posso modificare questo codice per visualizzare il ruolo effettivo dell'utente e non quello dell'utente corrente.

Presumo che tu stia cercando di mostrare il ruolo dell'autore del post e non dell'utente corrente che sta visualizzando la pagina dell'autore.
Assumendo che tu sia all'interno del loop, procedi come segue:
//ottieni l'ID dell'autore del post
$user_id = get_the_author_meta( 'ID' ); //assumiamo che siamo nel The Loop
$user_obj = get_userdata( $user_id );
if( !empty( $user_obj->roles ) ){
foreach( $user_obj->roles as $role ){
echo $role;
}
}
Oppure, se assegni un solo ruolo a ciascun utente/autore, puoi sostituire l'intero blocco foreach
con:
echo $user_obj->roles[0];

Modifica:
$user_roles = $current_user->roles;
con
$user = new WP_User( $user_id );
$user_roles = $user->roles;
e $user_id dovrebbe essere l'ID effettivo dell'utente di cui stai cercando di ottenere il ruolo.
Aggiornamento,
Scusa ho appena letto la parte del template dell'autore quindi prova questo:
//prima ottieni l'autore corrente di cui stai visualizzando la pagina
if(isset($_GET['author_name']))
$curauth = get_user_by('slug', $author_name);
else
$curauth = get_userdata(intval($author));
//poi ottieni l'oggetto utente con i ruoli
$user = new WP_User( $$curauth->ID );
$user_roles = $user->roles;
....

ottengo questo output object(WP_User)#349 (7) { ["data"]=> NULL ["ID"]=> int(0) ["caps"]=> array(0) { } ["cap_key"]=> NULL ["roles"]=> array(0) { } ["allcaps"]=> array(0) { } ["filter"]=> NULL }
Sto usando il nome del ruolo come vedi nel mio primo codice, non un ID, potrebbe essere quello il problema?
