Cómo mostrar el rol de usuario

27 may 2012, 16:57:21
Vistas: 14.9K
Votos: 2

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?

0
Todas las respuestas a la pregunta 2
0

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

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

Está mostrando una salida en blanco. Sin errores ni texto

pixelngrain pixelngrain
27 may 2012 17:18:36

Prueba var_dump($user); para ver qué estás obteniendo

Bainternet Bainternet
27 may 2012 17:19:50

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?

pixelngrain pixelngrain
27 may 2012 17:22:27

@pixelngrain actualicé mi respuesta

Bainternet Bainternet
27 may 2012 17:31:33