Предоставить редактору доступ к боковой панели

15

Я хочу дать редактору роль доступа к редактированию боковой панели и ее содержимого. У меня есть текстовый виджет там, и для редактирования этого текстового виджета пользователь должен быть администратором - это отстой. Как я разрешаю роль редактора, которая даст ему доступ к редактированию боковой панели?

Howdy_McGee
источник
Это может быть связано: wordpress.stackexchange.com/questions/13413/…
Эллиотт
Кажется, это то, что я ищу, но я не понимаю код. Похоже, он создает нового пользователя и назначает роли вместо редактирования существующего пользователя
Howdy_McGee

Ответы:

21

edit_theme_optionsСпособность должна позволять пользователю редактировать врезку , как описано на этой странице: http://codex.wordpress.org/Appearance_Widgets_SubPanel

Код для добавления functions.php

   $role = get_role('editor'); 
   $role->add_cap('edit_theme_options');

Редактировать:

Это должно работать, чтобы предотвратить доступ редактора к темам или меню

function custom_admin_menu() {

    $user = new WP_User(get_current_user_id());     
    if (!empty( $user->roles) && is_array($user->roles)) {
        foreach ($user->roles as $role)
            $role = $role;
    }

    if($role == "editor") { 
       remove_submenu_page( 'themes.php', 'themes.php' );
       remove_submenu_page( 'themes.php', 'nav-menus.php' ); 
    }       
}

add_action('admin_menu', 'custom_admin_menu');

У меня не было возможности проверить это, но он только удаляет их из меню, и они все равно могут получить к ним доступ, введя URL-адрес напрямую.

Elliott
источник
Это работает как очарование, но как мне запретить им доступ к меню или темам?
Howdy_McGee
Смотрите мой отредактированный ответ.
Эллиотт
Неустранимая ошибка: вызов неопределенной функции. И я не могу +1 ваш пост достаточно! Благодарность!
Howdy_McGee
Извините, что добавил неправильный код, так и должно быть, remove_submenu_pageхотя вы все равно не должны были получить фатальную ошибку. Я отредактировал свой ответ и проверил, и у меня все отлично работает?
Эллиотт
1
О, вот почему тогда он был поддержан только начиная с 3.1.0, у меня не было ошибок с момента обновления ... Я бы всегда предлагал обновить его до последней версии, чтобы обеспечить его безопасность.
Эллиотт
1

Если вы просто хотите настроить это как можно проще, используйте плагин Members. Возможность, которую вам нужно добавить - это edit_theme_options. Имейте в виду, что это предоставит больше, чем просто область виджетов, а также предоставит редактору доступ ко всему меню «Внешний вид». Посмотреть здесь

http://wordpress.org/extend/plugins/members/

Если вы хотите сделать это программно, вам нужно использовать add_cap ().

$editor = get_role('editor');
$editor->add_cap('edit_theme_options');

Вы можете добавить этот код в свой собственный плагин, и все готово. Или поместите это в functions.php .

eddiemoya
источник
И если кто-то использует довольно популярный редактор ролей пользователей, вы также можете выбрать «Изменить параметры темы» / «edit_theme_options».