В моих предыдущих постах на WordPress мы узнали, как создать плагин , изменить брендинг панели администрирования и удалить ненужные виджеты панели инструментов и мета-блоки .
В этом посте мы внесем некоторые фундаментальные изменения в главное меню администрирования. Если вы еще не создали первоначальный плагин, прочитайте первую часть . С возвращением — начнем …
Стандартное меню WordPress может быть немного сложным, а сторонние плагины часто добавляют дополнительные элементы. Вы можете ограничить роли пользователей, чтобы клиенты не видели все пункты меню, но, если вы не используете каждую функцию WordPress, они по-прежнему будут видеть параметры, которые не относятся к их сайту.
Мы создадим функцию, которая удаляет избыточные ссылки и упрощает работу ваших клиентов. Вот полный код, который вы можете скопировать в easy-admin.php:
// remove unnecessary menus
function remove_admin_menus() {
global $menu, $submenu;
// main menus removed for all users
$restrict = explode(',', 'Links,Comments');
// sub-menus removed for all users
$restrictsub = explode(',', 'Categories,Post Tags');
// main menus removed for everyone except administrators
$restrict_user = explode(',', 'Media,Profile,Appearance,Plugins,Users,Tools,Settings');
// sub-menus removed for everyone except administrators
$restrictsub_user = explode(',', 'Updates,My Sites');
// WP localization
$f = create_function('$v,$i', 'return __($v);');
array_walk($restrict, $f);
if (!current_user_can('activate_plugins')) {
array_walk($restrict_user, $f);
$restrict = array_merge($restrict, $restrict_user);
array_walk($restrictsub_user, $f);
$restrictsub = array_merge($restrictsub, $restrictsub_user);
}
// remove menus
end($menu);
while (prev($menu)) {
$k = key($menu);
$v = explode(' ', $menu[$k][0]);
if(in_array(is_null($v[0]) ? '' : $v[0] , $restrict)) unset($menu[$k]);
}
// remove sub-menus
foreach ($submenu as $k => $p) {
foreach($submenu[$k] as $j => $s) {
if (in_array(is_null($s[0]) ? '' : $s[0] , $restrictsub)) unset($submenu[$k][$j]);
}
}
}
add_action('admin_menu', 'remove_admin_menus');
Строки в верхней части этой функции определяют, какие пункты меню удаляются:
- $ restrict (строка 5) содержит разделенный запятыми список пунктов главного меню, которые не будут показаны ни одному пользователю, включая администраторов. В приведенном выше примере мы скрываем ссылки и комментарии, поскольку они не используются на нашем сайте.
- $ limittsub (строка 7) содержит разделенный запятыми список пунктов подменю, которые не будут показаны ни одному пользователю. Мы отключили категории и теги сообщений, которые обычно отображаются в главном меню сообщений.
- $ restrict_user (строка 9) содержит разделенный запятыми список пунктов главного меню, которые скрыты для всех, кроме администраторов. В приведенном выше примере отключено все, кроме панели инструментов, страниц и сообщений. (Не администраторы обычно не видят Внешний вид и Плагины, но другие плагины могут изменить эту функциональность).
- $ limittsub_user (строка 11) содержит разделенный запятыми список элементов подменю, которые скрыты для всех, кроме администраторов. Мы отключили обновления и личные сайты, которые обычно отображаются в главном меню панели инструментов.
Если вы не хотите, чтобы какие-либо элементы были удалены для определенного значения, установите для него пустой массив, например, $restrict = array();
В результате получается гораздо более простое административное меню, в котором нет опасных опций, которые могут запутать ваших клиентов.