Разрешить пользователю доступ только к панели управления!

24 июн. 2011 г., 16:22:54
Просмотры: 1.56K
Голосов: 1

Обновление: Этот сниппет ниже удаляет меню также для моего админ-аккаунта:

function remove_menu_items() {

    global $menu;
    global $user_ID; 

    if( $user_ID ) :

        /* Доступ только к панели управления */
        if( current_user_can( 'Dashboardvisitors' ) ) :

            $restricted = array(
                __('Записи'),
                __('Медиафайлы'),
                __('Страницы'),
                __('Ссылки'),
                __('Внешний вид'),
                __('Инструменты'),
                __('Пользователи'),
                __('Настройки'),
                __('Комментарии'),
                __('Плагины')
            );

        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');

Как я могу предоставить пользователю доступ только к панели управления?

Конкретнее, я хочу, чтобы они могли видеть только виджет статистики WordPress и виджет Google Analytics. И всё.

Я создал нового пользователя с ролью dashboardvisitors, используя плагин USER ROLE EDITOR.

Теперь уровень 0 плюс доступ на чтение не работает. Панель управления просто пустая.

Добавление прав на редактирование панели ничего не меняет. По-прежнему ничего не отображается (но я не хочу, чтобы они могли редактировать панель управления).

Как мне этого добиться? Это очень важно, так что большое спасибо!

0
Все ответы на вопрос 1
1

Вы можете добавить это в ваш файл functions.php:

function remove_menu_items() {

    global $menu;
    global $user_ID; 

    if( $user_ID ) :

        /* Доступ только к панели управления */
        if( current_user_can( 'dashboardvisitors' ) :

                $restricted = array(
                    __('Записи'), // Posts
                    __('Страницы'), // Pages
                    __('Ссылки'), // Links 
                    [и т.д...]
            );

        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');

Эта функция для каждого пользователя с ролью 'dashboardvisitors' при входе в админку WordPress удаляет пункты меню, перечисленные в массиве restricted. Если вы перечислите все разделы админки кроме панели управления в этом массиве, у вас получится админка только с панелью управления.

24 июн. 2011 г. 16:40:02
Комментарии

Спасибо @mike23, где я могу найти список всех массивов, которые я могу/должен удалить?

Simon Simon
24 июн. 2011 г. 17:35:50