Администраторская часть WordPress – одно из преимуществ системы. Тем не менее, в зависимости от ваших потребностей, меню может быть немного переполненным вещами, которые вам там не нужны.

В этом руководстве я покажу вам, как "приручить" ваше меню администратора. Я покажу, как переименовывать меню, менять порядок пунктов меню или просто удалять их, без затрагивания ядра. Потому что трогать ядро нежелательно.

Переименование пунктов меню

Иногда вам хочется переименовать один из пунктов меню панели администратора. Например, у вас сайт рецептов и вы используете "Записи" больше для списка рецептов, чем для блога.

Чтобы сделать это, вам нужно использовать зацепку к action admin_menu. Он используется для добавления подменю в меню консоли или для других настроек меню.

Переименование меню верхнего уровня

Во-первых, вам нужно создать функцию, и затем привязать ее к action внутри файла functions.php вашей темы.

function edit_admin_menus() {
	global $menu;
}
add_action( 'admin_menu', 'edit_admin_menus' );

Пункты меню консоли WordPress хранятся в массиве ($menu). Так что первое, что вы видите, edit_admin_menus использует $menu, чтобы получить массив. Теперь вам нужно определить ключ, связанный с пунктом меню, который вы хотите переименовать. Список всех пунктов меню и подменю будет предоставлен в конце руководства.

Поскольку мы хотим поменять меню "Записи" на "Рецепты", мы знаем, что нам нужно использовать 5.

function edit_admin_menus() {
	global $menu;

	$menu[5][0] = 'Рецепты'; // Изменить Записи на Рецепты
}
add_action( 'admin_menu', 'edit_admin_menus' );

Верите или нет, это все. Сохраните functions.php и обновите страницу консоли. Но теперь подменю не совпадают с новым именем.

Переименование подменю

Переименование подменю – почти тот же процесс, кроме того, что вам нужно добавить глобальную переменную $submenu и вам также надо будет использовать ссылку URI. Так что, например, смена "Все посты" на "Все рецепты" будет выглядеть примерно так:

$submenu['edit.php'][5][0] = 'Все Рецепты';

Вы можете сделать это же для каждого пункта подменю. Все вместе edit_admin_menus будет выглядеть примерно так:

function edit_admin_menus() {
	global $menu;
	global $submenu;

	$menu[5][0] = 'Рецепты'; // Изменить Записи на Рецепты
	$submenu['edit.php'][5][0] = 'Все Рецепты';
	$submenu['edit.php'][10][0] = 'Добавить Рецепт';
	$submenu['edit.php'][15][0] = 'Блюда'; // Изменить Рубрики на Блюда
	$submenu['edit.php'][16][0] = 'Ингредиенты'; // Изменить Метки на Ингредиенты
}
add_action( 'admin_menu', 'edit_admin_menus' );

Эта процедура применима ко всем пунктам меню и подменю в Консоли WordPress.

Изменения порядка пунктов меню

Теперь я собираюсь показать вам, как менять порядок пунктов меню, включая разделители. Я обычно предпочитаю, чтобы пункты Медиафайлы и Ссылки были ниже, поскольку я не использую их так часто, как Записи и Комментарии.

Изменение порядка меню консоли требует использования фильтра menu_order. В то же время, фильтр menu_order требует, чтобы вы сначала активировали custom_menu_order. Так что сначала вам нужно разместить следующий код в ваш functions.php.

function custom_menu_order($menu_ord) {
	if (!$menu_ord) return true;

	return array(
		'index.php', // Консоль
		'separator1', // Первый разделитель
		'edit.php', // Записи
		'upload.php', // Медиафайлы
		'link-manager.php', // Ссылки
		'edit.php?post_type=page', // Страницы
		'edit-comments.php', // Комментарии
		'separator2', // Второй разделитель
		'themes.php', // Внешний вид
		'plugins.php', // Плагины
		'users.php', // Пользователи
		'tools.php', // Инструменты
		'options-general.php', // Параметры
		'separator-last', // Последний разделитель
	);
}
add_filter('custom_menu_order', 'custom_menu_order'); // Применить custom_menu_order
add_filter('menu_order', 'custom_menu_order');

Пункты меню упорядочены сверху вниз, так что тот пункт меню, который вы разместите вверх массива, будет первым пунктом. Если вы не поместите один из стандартных пунктов меню в массив, он просто будет в конце списка, это не удалит его из меню.

Удаление пунктов меню

Вы переименовали некоторые пункты меню, и вы упорядочили их как вам нравится. Но что если вы вообще не используете управление страницами или ссылками? Вы можете просто удалить эти пункты.

Удаление меню верхнего уровня

Удаление пункта меню из панели администратора - очень простая задача. У WordPress есть встроенная функция как раз для удаления меню:

remove_menu_page();

Все, что нужно, — это remove_menu_page – короткая ссылка (slug) на меню, которое вы хотите удалить (список тоже можно найти в конце этого руководства) .

Так что, например, если вы хотели удалить меню Инструменты, вам нужно будет использовать следующее:

remove_menu_page('tools.php');

Удаляя меню, вы можете просто использовать снова ту же функцию, которую вы создали для переименования меню. Вот пример функции, которую вы использовали в начале этого руководства, когда переименовывали меню Запись, но теперь она также удаляет пункт меню Инструменты.

function edit_admin_menus() {
	global $menu;
	global $submenu;

	$menu[5][0] = 'Рецепты'; // Изменить Записи на Рецепты
	$submenu['edit.php'][5][0] = 'Все Рецепты';
	$submenu['edit.php'][10][0] = 'Добавить Рецепт';
	$submenu['edit.php'][15][0] = 'Блюда'; // Изменить Рубрики на Блюда
	$submenu['edit.php'][16][0] = 'Ингредиенты'; // Изменить Метки на Ингредиенты

	remove_menu_page('tools.php'); // Убрать меню Инструменты
}
add_action( 'admin_menu', 'edit_admin_menus' );

Удаление подменю

Удалять подменю так же просто. Мы будем использовать функцию, очень похожую на функцию удаления меню верхнего уровня. Вот скрытие Редактора тем из меню Внешний вид:

remove_submenu_page('themes.php','theme-editor.php');

Единственное отличие в аргументах функции – то, что вам нужно представить короткую ссылку для родительского элемента подменю, а затем ссылку для самого подменю. И последний пример кода, который скрывает все меню Инструменты и подменю Редактор тем:

function edit_admin_menus() {
	global $menu;
	global $submenu;

	$menu[5][0] = 'Рецепты'; // Изменить Записи на Рецепты
	$submenu['edit.php'][5][0] = 'Все Рецепты';
	$submenu['edit.php'][10][0] = 'Добавить Рецепт';
	$submenu['edit.php'][15][0] = 'Блюда'; // Изменить Рубрики на Блюда
	$submenu['edit.php'][16][0] = 'Ингредиенты'; // Изменить Метки на Ингредиенты

	remove_menu_page('tools.php'); // Убрать меню Инструменты
	remove_submenu_page('themes.php','theme-editor.php'); // Убрать подменю Редактор тем
}
add_action( 'admin_menu', 'edit_admin_menus' );

В заключение

Как вы видите, некоторые базовые настройки в панели администратора WordPress простые и удобные, и не смотря на то, что большинство не увидит изменений, в итоге это может вам очень помочь (и поможет). Организация никогда не повредит. Вы делаете это с пользовательской стороны темы, почему бы не сделать это и в администраторской.

Это также хорошо, если вы ведете сайт для клиента. Скрытие тех пунктов меню, использование которых может случайно нанести вред сайту, — всегда большой плюс!

Как обещал, я включил таблицу, в которой указаны все названия, ключи и ссылки меню и подменю (Английский язык).

Источник: WP.tutsplus.com

Вам понравился материал?

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

16 комментариев

сначала новые
по рейтингу сначала новые по хронологии
Георгий

Доброго времени суток. Статья полезная, спасибо. Но один вопрос, когда я делаю замену на трех языках , заголовки в самом списке меню отображаются корректно, а вот при входе в список всех "статей" подхватывается код типа "[:en]Articles[:ru]Статьи[:ka]სტატიები[:]" (использую qTranslate). Т.е. ему не нравится вторая функция. Может кто-то сталкивался с подобной проблемой ? Спасибо заранее

Александр

Может кому пригодится - если у вас создан новый тип записи, то просто URI другой прописываете (например, не edit.php, а edit.php?post_type=product).
Но вопрос, надеюсь, тут ответят - как переименовать везде Рубрики в Категории, Метки в Теги и т.д.? Толку, что просто в пункт меню в админке переименуется согласно инструкции этой (спасибо за нее), а при добавлении записи и вообще во всей админке все равно в остальных местах "Рубрики", "Метки" и т.д., если делать, то везде и до ума доводить. :)

Подскажите пожалуйста почему в админ панели размеры фото показывает как настроил, а переходишь на просмотр и показывает квадрат
Вот админка
Вот просмотр

А вот тут (так лучше) http://toursector.org.ua/otdyx-v-karpatax/slavskoe-2/ с точностью до наоборот. В админке квадраты, а в просмотре как в настройках

Евгений

Где регулируется размер шрифта самой админпанели Wordpress. У меня почему-то сатл таким мелким, что просто замучился с ним работать.

Андрей

Здравствуйте, подскажите как переименовать слово "метки", только не в админ панели, а на самом сайте.

Это можно сделать путем перевода понятий локализации. В теме должная быть папка lang или language, где хранятся файлы .po/.mo с переведенными фразами. Вы можете их отредактировать с помощью PoEdit.

Андрей

Спасибо, получилось.

Sergey Tchetchelev

Я не очень понял. Это все делается через консоль wordpress или в каком-то редакторе? У меня сейчас установлена версия 3.8

Это все делается путем правки файла functions.php внутри вашей активной темы. Это можно делать в любом редакторе кода, можно даже и через консоль wordpress (Внешний вид - Редактор - functions.php)

Sergey Tchetchelev

Извините, возможно я тупой, но хоть убейте массив $menu так и не нашел (тема twentyfourteen)

Вы и не должны его найти, просто скопируйте один из примеров выше целиком (который начинается с function edit_admin_menus()) и вставьте в конце вашего файла functions.php

Sergey Tchetchelev

Огромное спасибо! И заранее извиняюсь за подобные вопросы в дальнейшем.

Владимир

Вопрос. У меня после обновления эта самая левая панель вообще не отображается!!! Что делать?

Определенно, произошел сбой при обновлении. Попробуйте скачать дистрибутив с обновлением и развернуть его вручную на сайте, предварительно удалив все папки кроме wp-content и файла config.php

Полезно.
Но у меня обратная ситуация. мне нужно восстановить удаленный пункт "Внешний вид", но никаких функций edit_admin_menus в файлах function.php нет...

Как еще можно удалить сей пункт?

Очень полезный материал, сейчас как раз делаю один проект и нужно максимально облегчить админку. Спасибо!