Mostrar qué Rol tiene asignado el usuario actual

28 sept 2015, 13:06:59
Vistas: 26.2K
Votos: 2

¿Existe alguna sección en el panel de administración de mi instalación de WordPress que muestre qué rol tiene asignado el usuario actualmente conectado?

Por ejemplo, sé que tengo permisos de administrador porque lo , pero no puedo verlo confirmado en ningún lugar.

Además, si me configuro como Editor, ¿cómo puedo comprobar rápidamente que definitivamente estoy conectado como Editor? (aparte de simplemente "saberlo").

Sería realmente útil poder saberlo en caso de que estés haciendo 10 cosas a la vez y pierdas el hilo.

Tal vez sería bueno mostrar eso después del "¿Cómo estás...?" en la parte superior derecha.

EDICIÓN

Antes de que alguien mencione el panel de Usuarios. Sí, puedo ver que está la columna Rol (ya que soy administrador), pero alguien que fuera solo un Colaborador no podría ver eso, ¿verdad?

1
Comentarios

Es realmente extraño que WordPress no muestre el rol del usuario al propio usuario

Marco Panichi Marco Panichi
2 oct 2018 09:48:24
Todas las respuestas a la pregunta 3
0

Como sugeriste, aquí está cómo puedes mostrar los roles junto al nombre de usuario en la barra de administración:

function wpse_203917_admin_bar_menu( $wp_admin_bar ) {
    if ( ! $node = $wp_admin_bar->get_node( 'my-account' ) )
        return;

    $roles = wp_get_current_user()->roles;

    $node->title .= sprintf( ' (%s)', implode( ', ', $roles ) );

    $wp_admin_bar->add_node( $node );
}

add_action( 'admin_bar_menu', 'wpse_203917_admin_bar_menu' );
28 sept 2015 13:17:20
4

Verificas el rol del usuario actual y añades el valor a la barra de administración, como el elemento del perfil.

Para obtener el rol del usuario actual utiliza la pequeña función a continuación:

/**
 * Devuelve el rol traducido del usuario actual. 
 * Si no tiene rol, devuelve falso.
 *
 * @return string El nombre traducido del rol actual.
 **/
function fb_get_current_user_role_fixed() {
    global $wp_roles;

    $current_user = wp_get_current_user();
    $roles = $current_user->roles;
    $role = array_shift( $roles );

    return isset( $wp_roles->role_names[ $role ] ) ? translate_user_role( $wp_roles->role_names[ $role ] ) : FALSE;
}

También un ejemplo para añadir el valor de la función a la barra de administración, en mi caso una nueva entrada al elemento de cuenta en la Barra de Administración.

add_action( 'admin_bar_menu', 'fb_change_admin_bar_item' );
/**
 * Añade un elemento a la barra de administración, al elemento mi-cuenta.
 *
 * @param Array $wp_admin_bar
 */
function fb_change_admin_bar_item( $wp_admin_bar ) {

    $args = array(
        'id'     => 'user_role',
        'title'  => __( 'Rol:' ) . ' ' .     fb_get_current_user_role_fixed(),
        'parent' => 'my-account' 
    );
    $wp_admin_bar->add_node( $args );
}

Mira el resultado en la captura de pantalla, es mucho más fácil entender el objetivo del ejemplo. Captura de pantalla mostrando el rol del usuario en la barra de administración

Como alternativa, el segundo ejemplo, que añade el nombre del rol al nombre de usuario, en el título por defecto de la barra de administración.

add_action( 'admin_bar_menu', 'fb_change_admin_bar_item' );
function fb_change_admin_bar_item( $wp_admin_bar ) {

    $node = $wp_admin_bar->get_node( 'my-account' );

    if ( ! $node ) {
        return $wp_admin_bar;
    }

    $node->title .= ' ' . fb_get_current_user_role_fixed();

    $wp_admin_bar->add_node( $node );
}

También aquí una captura de pantalla del resultado.

Captura de pantalla mostrando el rol del usuario junto al nombre en la barra de administración

28 sept 2015 13:34:10
Comentarios

Ok. ¿Entonces no hay nada integrado ya que conozcas?

mikelovelyuk mikelovelyuk
28 sept 2015 13:35:37

Correcto, el núcleo no muestra el rol a cada usuario.

bueltge bueltge
28 sept 2015 13:41:31

¿En qué archivo(s) pongo todo esto?

mikelovelyuk mikelovelyuk
29 sept 2015 17:01:12

Un Plugin personalizado es la forma correcta.

bueltge bueltge
29 sept 2015 22:07:47
0

Simplemente uso:

global $current_user; echo array_shift($current_user->roles);

Para mostrar el rol del usuario actual.

26 nov 2018 11:58:29