¿Cómo obtener el rol del usuario actualmente conectado en wordpress?

2 minutos de lectura

¿Cómo obtener el rol del usuario actualmente conectado en wordpress?

Suponiendo que tiene la identificación de usuario ($user_id), algo como esto debería funcionar:

$user = new WP_User( $user_id );

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

Obtenga la identificación de usuario de su sesión.

Si no conoce la identificación de usuario, esta función lo ayudará (póngala en el archivo functions.php de su tema)

function get_user_role() {
    global $current_user;

    $user_roles = $current_user->roles;
    $user_role = array_shift($user_roles);

    return $user_role;
}

Y luego, en su plantilla puede obtener el rol de usuario llamando a get_user_role().

Lo encontré aquí.

  • Este método no es aplicable si tengo dos o más roles agregados en un usuario, la razón es que solo devuelve el rol único o el primero que se agrega al usuario, desplazado usando la función PHP array_shift.

    – Ryan S.

    6 de marzo de 2014 a las 15:27

  • Tenga en cuenta que $current_user siempre existe y, de forma predeterminada, se llena con atributos vacíos, por lo que aunque parece que este código tendrá problemas de índice y acceso a objetos, en realidad funciona. El rol devuelto para un nuevo visitante será NULL.

    – Kontur

    15 de marzo de 2019 a las 8:53

  • Para futuros lectores: El uso de global debe evitarse tanto como sea posible. Mantenga su código predecible

    – Martijn

    16 de mayo a las 10:59

function get_role_by_id( $id ) {

    if ( !is_user_logged_in() ) { return false; }

    $oUser = get_user_by( 'id', $id );
    $aUser = get_object_vars( $oUser );
    $sRole = $aUser['roles'][0];
    return $sRole;

}

<?php global $current_user; //get the current user
echo $current_user->roles[0]); //display the current user's role
?>

¿Ha sido útil esta solución?