Cómo mostrar el rol de usuario
Cómo mostrar el rol de usuario en la página de autor.
He creado mi propio rol (grupo) y quiero mostrar el rol del usuario debajo de las publicaciones y en la lista de autores.
He probado este código pero no funciona porque llama a current_user y muestra el rol del usuario actual en todos los perfiles de autores
<?php
// Obtener los roles del usuario actual
$user_roles = $current_user->roles;
// Obtener el primer rol del array
$user_role = array_shift($user_roles);
// Mostrar el rol según corresponda
if ($user_role == 'administrator') {
echo 'Administrador';
} elseif ($user_role == 'editor') {
echo 'Editor';
} elseif ($user_role == 'author') {
echo 'Autor';
} elseif ($user_role == 'contributor') {
echo 'Colaborador';
} elseif ($user_role == 'subscriber') {
echo 'Suscriptor';
} else {
echo '<strong>' . $user_role . '</strong>';
}
?>
¿Cómo puedo modificar este código para mostrar el rol real del usuario y no el rol del usuario actual?

Supongo que estás intentando mostrar el rol del Autor del post y no del usuario actual que está viendo la página del autor.
Asumiendo que estás dentro del loop, haz lo siguiente:
//obtener el ID del autor del post
$user_id = get_the_author_meta( 'ID' ); //asumimos que estamos en The Loop
$user_obj = get_userdata( $user_id );
if( !empty( $user_obj->roles ) ){
foreach( $user_obj->roles as $role ){
echo $role;
}
}
O, si solo asignas un rol a cada usuario/autor, entonces puedes hacer lo siguiente reemplazando todo el bloque foreach
:
echo $user_obj->roles[0];

Cambiar:
$user_roles = $current_user->roles;
con
$user = new WP_User( $user_id );
$user_roles = $user->roles;
y el $user_id debe ser el ID real del usuario cuyo rol estás intentando obtener.
Actualización,
Lo siento, acabo de leer la parte de la plantilla de autor, así que prueba esto:
//primero obtén el autor actual cuya página estás viendo
if(isset($_GET['author_name']))
$curauth = get_user_by('slug', $author_name);
else
$curauth = get_userdata(intval($author));
//luego obtén el objeto de usuario con roles
$user = new WP_User( $$curauth->ID );
$user_roles = $user->roles;
....

Obtengo esta salida object(WP_User)#349 (7) { ["data"]=> NULL ["ID"]=> int(0) ["caps"]=> array(0) { } ["cap_key"]=> NULL ["roles"]=> array(0) { } ["allcaps"]=> array(0) { } ["filter"]=> NULL }
Estoy usando el nombre del rol como puedes ver en mi primer código, no un ID, ¿podría eso estar causando el problema?
