дозволити редакторам редагувати меню?


46

Я хотів би мати можливість надати моїм редакторам право змінювати меню, чи можна це зробити?

Вкладка зовнішнього вигляду взагалі не є варіантом, чи можу я зробити так?

Відповіді:


53

додайте це до теми теми functions.php:

// add editor the privilege to edit theme

// get the the role object
$role_object = get_role( 'editor' );

// add $cap capability to this role object
$role_object->add_cap( 'edit_theme_options' );

1
get_role - клас?
Легкий фуз

4
@Mild Fuzz - не сам ні, але він повертає екземплярWP_Role
TheDeadMedic

8
Напевно, ви не повинні робити це на кожен запит, оскільки це призводить до запису на db, наскільки я зрозумів. Краще admin_initі тількиif !$role_object->has_cap('edit_theme_options')
jsphpl

Цей параметр зберігається в базі даних (у таблиці wp_options, поле wp_user_roles), тому, можливо, буде краще запустити це за темою / активацією плагіну. Дивіться codex.wordpress.org/Function_Reference/add_cap
Pim Schaaf

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

18

EDIT: оновлення для WP 4.9 та приховування лише пунктів меню для редактора

Якщо ви хочете, щоб ваші користувачі могли змінити меню навігації, але не інші параметри, що з’являються на екрані: скористайтеся цим

// Do this only once. Can go anywhere inside your functions.php file
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );

Ви можете прокоментувати весь цей код після оновлення панелі адміністратора, оскільки вищевказаний код внесе постійні зміни в базу даних.

Тепер у вас є всі видимі параметри, видимі для редакторів. Ви можете сховати інші варіанти, як-от так:

function hide_menu() {

    if (current_user_can('editor')) {

        remove_submenu_page( 'themes.php', 'themes.php' ); // hide the theme selection submenu
        remove_submenu_page( 'themes.php', 'widgets.php' ); // hide the widgets submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php' ); // hide the customizer submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php&autofocus%5Bcontrol%5D=background_image' ); // hide the background submenu


        // these are theme-specific. Can have other names or simply not exist in your current theme.
        remove_submenu_page( 'themes.php', 'yiw_panel' );
        remove_submenu_page( 'themes.php', 'custom-header' );
        remove_submenu_page( 'themes.php', 'custom-background' );
    }
}

add_action('admin_head', 'hide_menu');

Останні 3 рядки hide_menu()функції - це тема, специфічна для моєї теми. Ви можете знайти другий параметр, натиснувши на підменю, яке хочете приховати, на панелі адміністратора. Тоді ваша URL-адреса стане чимось на зразок: example.com/wp-admin/themes.php?page= yiw_panel

Отже, у цьому прикладі буде другий параметр remove_submenu_page()функціїyiw_panel


1
це приховує теми тощо для адміністраторів.
JorgeLuisBorges

12

У WordPress 3.8 це був би кращий код, ніж поточна прийнята відповідь.

/**
 * @var $roleObject WP_Role
 */
$roleObject = get_role( 'editor' );
if (!$roleObject->has_cap( 'edit_theme_options' ) ) {
    $roleObject->add_cap( 'edit_theme_options' );
}

3

Коли я дивлюся на структуру меню адміністратора, здається , посилання прив'язана до здатності . Чи можете ви змінити роль редактора, щоб включити цю можливість? Це також дасть їм можливість редагувати віджети , я не знаю, чи це проблема? Усі можливості меню Ajax обмежені цією можливістю, тому просто змінити можливість адмін меню меню для редагування меню, ймовірно, не вийде.nav-menus.phpedit_theme_options


3

встановити плагін "Редактор ролей користувача" - Увімкніть edit_theme_options ON - встановіть плагін Adminimize - вимкніть "Віджети" та "Переключити тему" для редакторів;)


0

Я виявив, що ваше меню буде працювати таким чином: встановіть плагін " Редактор ролей користувача ", і там ви можете редагувати умови для ролі редактора та інших. Увімкніть функцію edit_theme_options. Але тепер: ви побачите "меню" -опція під "теми", "віджети". Для мене: Після натискання на "меню" (як редактор) я не побачив заповнені параметри, але порожній. Тому я відключив плагін "Редактор ролей користувача" і заповнені параметри "меню" відображаються правильно. Зауважте, що дезактивація плагіна "User Role Editor" залишається умовою для редактора активним! Добре для мене, можливо, і вам це допоможе

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.