Permitir acceso al usuario solo al Escritorio

24 jun 2011, 16:22:54
Vistas: 1.56K
Votos: 1

Actualización: Este fragmento de código también elimina el menú para mi cuenta de administrador:

function remove_menu_items() {

    global $menu;
    global $user_ID; 

    if( $user_ID ) :

        /* Acceso solo al Escritorio */
        if( current_user_can( 'Dashboardvisitors' ) ) :

            $restricted = array(
                __('Entradas'),
                __('Medios'),
                __('Páginas'),
                __('Enlaces'),
                __('Apariencia'),
                __('Herramientas'),
                __('Usuarios'),
                __('Ajustes'),
                __('Comentarios'),
                __('Plugins')
            );

        endif;

    endif;  

    end ( $menu );

    while ( prev( $menu ) ) :
        $value = explode( ' ', $menu[key($menu)][0] );
        if( in_array( $value[0] != NULL?$value[0]:"" , $restricted ) ) :
            unset( $menu[key($menu)] );
        endif;
    endwhile;

}
add_action('admin_menu', 'remove_menu_items');

¿Cómo puedo darle a un usuario acceso solo al Escritorio?

Más específicamente, quiero que puedan ver el widget de estadísticas de WordPress y el widget de Google Analytics. Nada más.

He creado un nuevo usuario con el rol dashboardvisitors usando el plugin USER ROLE EDITOR.

Ahora nivel 0 más acceso de lectura no es suficiente. El Escritorio simplemente está vacío.

Agregar editar escritorio no cambia nada. Sigue sin mostrar nada (pero tampoco quiero que puedan editar el Escritorio).

¿Cómo puedo lograr esto? Es muy importante, ¡muchas gracias!

0
Todas las respuestas a la pregunta 1
1

Puedes colocar esto en tu functions.php:

function remove_menu_items() {

    global $menu;
    global $user_ID; 

    if( $user_ID ) :

        /* Solo acceso al Dashboard */
        if( current_user_can( 'dashboardvisitors' ) ) :

                $restricted = array(
                    __('Entradas'), // Posts
                    __('Páginas'), // Pages
                    __('Enlaces'),  // Links
                    [etc...]
            );

        endif;

    endif;  

    end ( $menu );

    while ( prev( $menu ) ) :
        $value = explode( ' ', $menu[key($menu)][0] );
        if( in_array( $value[0] != NULL?$value[0]:"" , $restricted ) ) :
            unset( $menu[key($menu)] );
        endif;
    endwhile;

}
add_action('admin_menu', 'remove_menu_items');

Lo que hace es que para cada usuario con el rol 'dashboardvisitors' que accede al administrador de WP, elimina los elementos del menú listados en el array restricted. Si listas todas las secciones del admin excepto el dashboard en ese array, deberías tener un administrador con acceso solo al dashboard.

24 jun 2011 16:40:02
Comentarios

Gracias @mike23, ¿dónde puedo encontrar una lista de todos los arrays que puedo/debería eliminar?

Simon Simon
24 jun 2011 17:35:50