Come visualizzare il ruolo dell'utente in WordPress

27 mag 2012, 16:57:21
Visualizzazioni: 14.9K
Voti: 2

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.

0
Tutte le risposte alla domanda 2
0

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];
6 feb 2013 06:00:05
4

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; 
....
27 mag 2012 17:15:03
Commenti

restituisce un output vuoto. Nessun errore o testo

pixelngrain pixelngrain
27 mag 2012 17:18:36

prova var_dump($user); per vedere cosa ottieni

Bainternet Bainternet
27 mag 2012 17:19:50

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?

pixelngrain pixelngrain
27 mag 2012 17:22:27

@pixelngrain ho aggiornato la mia risposta

Bainternet Bainternet
27 mag 2012 17:31:33