В этом руководстве мы вам расскажем, как можно приручить ваше меню администратора в WordPress.
Мы покажем вам, как переименовать меню, изменить в нем порядок элементов, или, просто, удалить ненужные элементы, не затрагивая при этом ядра WordPress, что очень хорошо (особенно, при обновлении WordPress).
Переименование меню
Бывают такие моменты, когда вам нужно переименовать в админке какой-нибудь из элементов меню. Например, вы ведете блог по кулинарии, и “Posts” нужно переименовать в “Recipes”.
Чтобы это сделать, вам нужен хук admin_menu
. Он используется для добавления подменю в меню админки WordPress, а также, в остальных операциях с меню.
Переименование меню первого уровня
Во-первых, вам нужно создать функцию, затем добавить ее к хуку в functions.php
вашей темы.
1 2 3 4 |
function edit_admin_menus() { global $menu; } add_action( 'admin_menu', 'edit_admin_menus' ); |
Администраторское меню в WordPress хранится в массиве ($menu
). И так, из кода вы видите, что функция edit_admin_menus
использует глобальную переменную-массив $menu
. Теперь вам необходимо определить индекс, связанный с меню, чтобы обратиться к нужному элементу, который требуется переименовать. Этот список всех меню и подменю представлен в конце этого руководства.
Поскольку мы хотим изменить “Posts” на “Recipes”, то нам нужен индекс “5″:
1 2 3 4 5 6 |
function edit_admin_menus() { global $menu; $menu[5][0] = 'Recipes'; // Меняем Posts на Recipes } add_action( 'admin_menu', 'edit_admin_menus' ); |
Верите или нет, но это все, что нужно сделать. Сохраняете functions.php
, и перегружаете админскую страницу. Элемент меню изменился, но подменю осталось без изменения.
Переименование подменю
Переименование подменю происходит по той же технологии, за исключением того, что обращаться нужно к глобальной переменной $submenu
. Например, вам нужно переименовать “All Posts” на “All Recipes”:
1 |
$submenu['edit.php'][5][0] = 'All Recipes'; |
Вы можете проделать такую операцию с каждым элементом подменю. Таким образом, наша функция edit_admin_menus
будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 |
function edit_admin_menus() { global $menu; global $submenu; $menu[5][0] = 'Recipes'; // Меняем Posts на Recipes $submenu['edit.php'][5][0] = 'All Recipes'; $submenu['edit.php'][10][0] = 'Add a Recipe'; $submenu['edit.php'][15][0] = 'Meal Types'; // Меняем categories на meal types $submenu['edit.php'][16][0] = 'Ingredients'; // Меняем tags на ingredients } add_action( 'admin_menu', 'edit_admin_menus' ); |
Меню записей теперь переименовано в меню рецептов. И так вы можете работать со всеми элементами меню в админке WordPress.
Изменение порядка элементов в меню
Сейчас мы вам покажем, как изменить порядок элементов в меню, включая разделители. Например, передвинем Media и Links ниже, чем Pages и Comments.
Для того, чтобы упорядочить нужным образом элементы меню в WordPress, нужно использовать фильтр menu_order
для активации custom_menu_order
. Для начала, скопируйте код в functions.php
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // Dashboard 'separator1', // Первый разделитель 'edit.php', // Posts 'upload.php', // Media 'link-manager.php', // Links 'edit.php?post_type=page', // Pages 'edit-comments.php', // Comments 'separator2', // Второй разделитель 'themes.php', // Appearance 'plugins.php', // Plugins 'users.php', // Users 'tools.php', // Tools 'options-general.php', // Settings 'separator-last', // Последний разделитель ); } add_filter('custom_menu_order', 'custom_menu_order'); // Активация custom_menu_order add_filter('menu_order', 'custom_menu_order'); |
Порядок в меню организован сверху вниз. Таким образом, если вы добавите в начало массива какой-либо элемент, то он появится в меню первым, и так далее. А если вы забудете внести в массив, какой-либо элемент, то он все равно появится в меню, но будет самым последним.
Удаление элементов меню
Если вам не нужны, какие-либо элементы в меню, то их можно удалить.
Удаление элементов первого уровня
Сам процесс удаления элемента меню очень прост. В WordPress для этого есть специальная функция:
1 |
remove_menu_page(); |
Все что нужно для remove_menu_page
, так это указать, что вы хотите удалить (список в конце статьи).
Например, если вам нужно удалить из меню элемент “Tools”, то нужно написать:
1 |
remove_menu_page('tools.php'); |
Для удаления какого-либо элемента в меню можно использовать ту же функцию, что и для переименования меню. Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function edit_admin_menus() { global $menu; global $submenu; $menu[5][0] = 'Recipes'; // Меняем Posts на Recipes $submenu['edit.php'][5][0] = 'All Recipes'; $submenu['edit.php'][10][0] = 'Add a Recipe'; $submenu['edit.php'][15][0] = 'Meal Types'; // Меняем categories на meal types $submenu['edit.php'][16][0] = 'Ingredients'; // Меняем tags на ingredients remove_menu_page('tools.php'); // Удаляем Tools } add_action( 'admin_menu', 'edit_admin_menus' ); |
Удаление элементов подменю
Удаление подменю построено по тому же принципу, что и удаление элементов из меню первого уровня. Далее пример того, как можно удалить Theme Editor из Appearance:
1 |
remove_submenu_page('themes.php','theme-editor.php'); |
Разница лишь в аргументах. Нужно дополнительно указывать родителя, у которого хотим удалить подменю.
Итоговый пример будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function edit_admin_menus() { global $menu; global $submenu; $menu[5][0] = 'Recipes'; // Меняем Posts на Recipes $submenu['edit.php'][5][0] = 'All Recipes'; $submenu['edit.php'][10][0] = 'Add a Recipe'; $submenu['edit.php'][15][0] = 'Meal Types'; // Меняем categories на meal types $submenu['edit.php'][16][0] = 'Ingredients'; // Меняем tags на ingredients remove_menu_page('tools.php'); // Удаляем Tools remove_submenu_page('themes.php','theme-editor.php'); // Удаляем элемент подменю Theme Editor } add_action( 'admin_menu', 'edit_admin_menus' ); |
В итоге
Как вы уже поняли, управление меню в админке WordPress достаточно простое и при этом нужное, если вы заняты в разработке тем для этой CMS. Определенная организация никогда не была во вред. И если вы разрабатываете темы, то не забывайте и про администраторскую часть разработки. Кроме того скрытие элементов меню повышает шанс непреднамеренного вреда сайту.
Как и было обещано, выкладываем списки индексов и путей для управления меню.