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

13 сент. 2011 г., 21:22:00
Просмотры: 14.9K
Голосов: 16

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

2
Комментарии

Это может быть связано: http://wordpress.stackexchange.com/questions/13413/how-to-add-a-capability-to-a-user-role

Elliott Elliott
13 сент. 2011 г. 21:33:36

Похоже на то, что мне нужно, но я не понимаю код. Выглядит так, будто он создает нового пользователя и назначает роли, вместо редактирования существующего пользователя

Howdy_McGee Howdy_McGee
13 сент. 2011 г. 21:40:05
Все ответы на вопрос 2
8
23

Возможность 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 напрямую.

13 сент. 2011 г. 21:49:59
Комментарии

Это работает прекрасно, но тогда как мне запретить им доступ к меню или темам?

Howdy_McGee Howdy_McGee
13 сент. 2011 г. 22:06:04

Смотрите мой отредактированный ответ.

Elliott Elliott
13 сент. 2011 г. 22:23:26

Фатальная ошибка: Вызов неопределенной функции remove_menu_page() - Также я не беспокоюсь о том, что они могут ввести URL вручную, я сомневаюсь, что кто-то будет настолько злонамеренным, да и это всего лишь темы и меню. И я не могу достаточно выразить свою благодарность вашему посту! Спасибо!

Howdy_McGee Howdy_McGee
13 сент. 2011 г. 22:36:40

Извините, добавил неправильный код, должно быть remove_submenu_page, хотя вы все равно не должны были получить фатальную ошибку. Я отредактировал свой ответ и проверил — у меня все работает нормально.

Elliott Elliott
13 сент. 2011 г. 22:48:57

Все равно получаю фатальную ошибку с "remove_submenu_page" — я добавляю это в начало файла Functions.php в папке моей темы, это правильно?

Howdy_McGee Howdy_McGee
13 сент. 2011 г. 22:53:27

Да, это правильно. Какую версию WordPress вы сейчас используете?

Elliott Elliott
13 сент. 2011 г. 22:55:07

Я использую версию 3.0.4 - я старался не обновляться, потому что постоянно слышу, насколько она бажная как на фронтенде, так и в бэкенде.

Howdy_McGee Howdy_McGee
13 сент. 2011 г. 23:00:54

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

Elliott Elliott
13 сент. 2011 г. 23:07:29
Показать остальные 3 комментариев
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.

13 сент. 2011 г. 21:50:15
Комментарии

И если кто-то использует довольно популярный плагин User Role Editor, там тоже можно выбрать 'Редактировать настройки темы'/'edit_theme_options'.

User User
2 дек. 2018 г. 05:55:53