Cum să afișezi rolul utilizatorului în WordPress
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.

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];

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;
....

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?
