Cum să afișezi rolul utilizatorului în WordPress

27 mai 2012, 16:57:21
Vizualizări: 14.9K
Voturi: 2

Cum să afișez rolul utilizatorului pe pagina de autor.

Am creat un rol personalizat (grup) și vreau să afișez rolul utilizatorului sub articole și în lista de autori.

Am încercat acest cod dar nu funcționează corect deoarece folosește current_user și afișează rolul utilizatorului curent pentru toți autorii.

<?php 
    // Obține rolurile utilizatorului curent
    $user_roles = $current_user->roles;
    // Extrage primul rol din array
    $user_role = array_shift($user_roles);

    // Verifică rolul și afișează corespunzător
    if ($user_role == 'administrator') {
        echo 'Administrator';
    } elseif ($user_role == 'editor') {
        echo 'Editor';
    } elseif ($user_role == 'author') {
        echo 'Autor';
    } elseif ($user_role == 'contributor') {
        echo 'Contribuitor';
    } elseif ($user_role == 'subscriber') {
        echo 'Abonat';
    } else {
        echo '<strong>' . $user_role . '</strong>';
    }
?>

Cum pot modifica acest cod pentru a afișa rolul real al utilizatorului și nu rolul utilizatorului curent.

0
Toate răspunsurile la întrebare 2
0

Presupun că încerci să afișezi rolul autorului postării și nu al utilizatorului curent care vizitează pagina autorului.

presupunând că te afli în bucla (loop), fă următoarele:

//obține ID-ul autorului postării
$user_id = get_the_author_meta( 'ID' ); //presupunem că suntem în The Loop

$user_obj = get_userdata( $user_id );

if( !empty( $user_obj->roles ) ){
    foreach( $user_obj->roles as $role ){
        echo $role;
    }
}

sau, dacă atribui un singur rol fiecărui utilizator/autor, atunci poți înlocui întregul bloc foreach cu:

echo $user_obj->roles[0];
6 feb. 2013 06:00:05
4

Schimbă:

$user_roles = $current_user->roles;

cu

$user = new WP_User( $user_id );
$user_roles = $user->roles;

și $user_id ar trebui să fie ID-ul real al utilizatorului al cărui rol încerci să-l obții.

Actualizare,

Scuze, tocmai am citit partea despre template-ul autorului, așa că încearcă asta:

//mai întâi obține autorul curent a cărui pagină o vizualizezi
if(isset($_GET['author_name']))
        $curauth = get_user_by('slug', $author_name);
else
        $curauth = get_userdata(intval($author));
//apoi obține obiectul utilizator cu roluri
$user = new WP_User( $$curauth->ID );
$user_roles = $user->roles; 
....
27 mai 2012 17:15:03
Comentarii

afișează un rezultat gol. Nici o eroare sau niciun text

pixelngrain pixelngrain
27 mai 2012 17:18:36

încearcă var_dump($user); pentru a vedea ce obții

Bainternet Bainternet
27 mai 2012 17:19:50

obțin acest 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 }

Folosesc numele rolului, dacă te uiți la primul meu cod, nu vreun ID, deci asta ar putea cauza problema?

pixelngrain pixelngrain
27 mai 2012 17:22:27

@pixelngrain am actualizat răspunsul meu

Bainternet Bainternet
27 mai 2012 17:31:33