Я хотів би мати можливість надати моїм редакторам право змінювати меню, чи можна це зробити?
Вкладка зовнішнього вигляду взагалі не є варіантом, чи можу я зробити так?
Я хотів би мати можливість надати моїм редакторам право змінювати меню, чи можна це зробити?
Вкладка зовнішнього вигляду взагалі не є варіантом, чи можу я зробити так?
Відповіді:
додайте це до теми теми 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' );
WP_Role
admin_init
і тількиif !$role_object->has_cap('edit_theme_options')
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
Коли я дивлюся на структуру меню адміністратора, здається , посилання прив'язана до здатності . Чи можете ви змінити роль редактора, щоб включити цю можливість? Це також дасть їм можливість редагувати віджети , я не знаю, чи це проблема? Усі можливості меню Ajax обмежені цією можливістю, тому просто змінити можливість адмін меню меню для редагування меню, ймовірно, не вийде.nav-menus.php
edit_theme_options
встановити плагін "Редактор ролей користувача" - Увімкніть edit_theme_options ON - встановіть плагін Adminimize - вимкніть "Віджети" та "Переключити тему" для редакторів;)
Я виявив, що ваше меню буде працювати таким чином: встановіть плагін " Редактор ролей користувача ", і там ви можете редагувати умови для ролі редактора та інших. Увімкніть функцію edit_theme_options. Але тепер: ви побачите "меню" -опція під "теми", "віджети". Для мене: Після натискання на "меню" (як редактор) я не побачив заповнені параметри, але порожній. Тому я відключив плагін "Редактор ролей користувача" і заповнені параметри "меню" відображаються правильно. Зауважте, що дезактивація плагіна "User Role Editor" залишається умовою для редактора активним! Добре для мене, можливо, і вам це допоможе