Надати редактору доступ до бічної панелі


15

Я хочу надати роль редактора для редагування бічної панелі та її вмісту. У мене є текстовий віджет, і для того, щоб редагувати цей текстовий віджет, користувачеві потрібно бути адміністратором - це відстійно. Як надати дозвіл на роль редактора, яка надасть йому доступ до редагування бічної панелі?


Це може бути пов’язано: 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.


Це працює як шарм, але як тоді я не дозволяти їм отримувати доступ до меню чи тем?
Howdy_McGee

Дивіться мою відредаговану відповідь.
Елліотт

Fatal Error: Call to undefined function remove_menu_page () - Також я не переживаю за те, щоб вони ввели її за URL-адресою. Я дуже сумніваюся, що хтось стане таким шкідливим, і навіть тому це лише теми та меню. І я не можу поставити +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');

Ви можете кинути цей код у свій власний плагін, і це вже зроблено. Або поставити його у function.php .


І якщо хтось використовує досить популярний редактор ролей користувача, ви також можете вибрати "Редагувати параметри теми" / "редагувати_тему_опції".
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.