Я хотел бы предоставить моим редакторам возможность изменять меню, это можно сделать?
Вкладка «Внешний вид» вообще не является опцией, могу ли я сделать это так?
Я хотел бы предоставить моим редакторам возможность изменять меню, это можно сделать?
Вкладка «Внешний вид» вообще не является опцией, могу ли я сделать это так?
Ответы:
добавьте это к вашей теме 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')
РЕДАКТИРОВАТЬ: обновление для 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
Когда я смотрю на структуру меню администратора, кажется, что nav-menus.php
ссылка связана с возможностьюedit_theme_options
. Можете ли вы изменить роль редактора, чтобы включить эту возможность? Это также даст им возможность редактировать виджеты , я не знаю, является ли это проблемой? Все возможности Ajax меню ограничены этой возможностью, поэтому простое изменение возможности меню администратора для редактирования меню, вероятно, не сработает.
установить плагин «User Role Editor» - включить edit_theme_options - установить плагин «Adminize» - отключить «Виджеты» и «Switch Theme» для редакторов;)
Я обнаружил, что ваше меню будет работать следующим образом: установите плагин « User Role Editor », и там вы сможете отредактировать условие для роли редактора и другие. Включить edit_theme_options. Но теперь: вы увидите «menu» -опция под «themes», «widgets». Для меня: после нажатия на «меню» (как редактор) я не вижу заполненные опции, но пустые. Поэтому я деактивировал плагин "User Role Editor", и заполненные опции для "menu" отображаются правильно. Обратите внимание, что отключение плагина «User Role Editor» остается условием для активного редактора! Хорошо для меня, может быть, это поможет вам тоже