Редактирование пунктов меню администриративной панели WordPress

В панели администрирования WordPress есть боковое меню с набором пунктов. В этой статье обсудим как изменить/добавить и удалить свои собственные пункты в это меню с помощью следующих функций:
  • add_menu_page - добавляет пункт меню верхнего уровня
  • add_submenu_page - добавляет пункт меню на втором уровне
  • remove_menu_page - удаляет пункт меню верхнего уровня
  • remove_submenu_page - удаляет пункт меню второго уровня
Все эти функции нужно вызывать через хук "admin_menu". В хуке вызываете функцию, а в ней ставите нужную функцию:
add_action( 'admin_menu', 'remove_menu' );
function remove_menu(){
   remove_menu( 'myMenu' ); 
}
Подробнее прочитать о хуках в нашей статье "Фильтры и события (хуки) в WordPress".
Рассмотрим подробнее все эти функции.

Добавление пункта бокового меню

Функция "add_menu_page" добавляе пункт верхнего уровня в панель администрирования WordPress. В процессе создания пункта меню к нему прикрепляетс ястраница, которая отвечает за этот пункт.

Функция "add_menu_page" проверяет права доступа пользователя, чтобы отобразить пункт меню. Если у пользователя нет уровня доступа, то пункт меню не будет показан
У функции есть несколько аргументов:
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
Название Тип данных Описание
$page_title строка Текст, который будет использован в теге <title> на странице, которая открывается при нажатии на пункт меню. Обязательный параметр.
$menu_title строка Название пункта бокового меню. Обязательный параметр
$capability строка Уровень доступа пользователя (права), необходимые для просмотра пункта.
$menu_slug строка Уникальный ярлык (slug), по которому идёт обращение к пункт. Обязательный параметр. Указывается название PHP файла относительно каталога плагинов, который отвечает за вывод страницы меню. Либо можно указать любую ссылку, куда будет вести пункт.
$function строка Название функции, которая выводит содержание страницы пункта меню. Если пустое значение, то будет только подключаться PHP файл для вывода из параметра "$menu_slug". По умолчанию: нет
$icon_url строка Адрес иконки для пункта меню относительно папки с плагинов. Размеры иконки должны быть 20х20 пикселей или меньше. Можно указывать изображение в base64: "data:image/png;base64..." - в этом случае, иконка фоном контейнера. Можно указывать название иконки из коллекции "dashicons", которая встроена в WordPress. По умолчанию: ''
$position число Позиция в меню. Чем больше цифра, тем ниже располагается пункт меню. При совпадении чисел с уже существующими пунктами произойдёт перезапись (пункт будет заменён), поэтому не стоит использовать целые числа. Лучше использовать цифры с сотыми долями, чтобы вероятность совпадения была минимальной. Такие числа передавайте как строку.

Если число не указано, то пункт меню будет добавлен в конец списка. Список позиций системных пунктов:

2 Консоль
4 Разделитель
5 Посты
10 Медиа
15 Ссылки
20 Страницы
25 Комментарии
59 Разделитель
60 Внешний вид
65 Плагины
70 Пользователи
75 Инструменты
80 Настройки
99 Разделитель
Рассмотрим пример использования функции. Создадим пункт меню, за отображение страницы которого будет отвечать функция "show_page" :
<?php
add_action('admin_menu', function(){
   add_menu_page( 'Пункт меню', 'Подпункт', 'manage_options', 'site-options', 'show_page', '', 59 ); 
});
function show_page(){
   ?>
      <div class="wrap">
         <h2><?php echo get_admin_page_title() ?></h2>
         <div>Тело страницы</div>
      </div>
   <?php
}?>
Можно вынести код в файл:
<?php
add_action('admin_menu', function(){
   add_menu_page( 'Пункт меню', 'Подпункт', 'manage_options', 'site-options', 'wp-content/plugins/myplugin/admin.php', '', 59 ); 
});
А внутри файла "admin.php" будет:
<div class="wrap">
   <h2><?php echo get_admin_page_title() ?></h2>
   <div>Тело страницы</div>
</div>

Добавление подпункта бокового меню

Функция "add_submenu_page" добавляет подпункт в уже существующий пункт меню. То есть дочернюю страницу (подраздел). Эта функция так же проверяет права пользователя, скрывая пункт, если прав на его просмотр было недостаточно.

У функции есть несколько аргументов:
add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function, $position );
Название Тип данных Описание
$parent_slug строка Ярлык (slug) родительского пункта меню, в который добавляется дочерний. Либо название файла страницы администрирования WordPress. Если поставить значение NULL, то страница не будет появляться в пункте меню. Примеры значений:
index.php или функция add_dashboard_page() - Консоль (Dashboard).

edit.php или функция add_posts_page() - Посты (Posts).

upload.php или функция add_media_page() - Медиафайлы (Media).

link-manager.php или функция add_links_page() - Ссылки (Links).

edit.php?post_type=page или функция add_pages_page() - Страницы (Pages).

edit-comments.php или функция add_comments_page() - Комментарии (Comments).

edit.php?post_type=your_post_type - Произвольные типы записей.

themes.php или функция add_theme_page() - Внешний вид (Appearance).

plugins.php или функция add_plugins_page() - Плагины (Plugins).

users.php или функция add_users_page() - Пользователи (Users).

tools.php или функция add_management_page() - Инструменты (Tools).

options-general.php или функция add_options_page() - Настройки (Settings).

settings.php - Настройки (Settings) сети сайтов в MU режиме.
$page_title строка Текст, который будет использован в теге <title> на странице, которая открывается при нажатии на пункт меню. Обязательный параметр.
$menu_title строка Название пункта бокового меню. Обязательный параметр
$capability строка Уровень доступа пользователя (права), необходимые для просмотра пункта.
$menu_slug строка Уникальный ярлык (slug), по которому идёт обращение к пункт. Обязательный параметр, может совпадать с этим значением родительского пункта. Указывается название PHP файла относительно каталога плагинов, который отвечает за вывод страницы меню. Либо можно указать любую ссылку, куда будет вести пункт.
$function строка Название функции, которая выводит содержание страницы пункта меню. Если пустое значение, то будет только подключаться PHP файл для вывода из параметра "$menu_slug". По умолчанию: нет
$position число Позиция в меню. Чем больше цифра, тем ниже располагается пункт меню. При совпадении чисел с уже существующими пунктами произойдёт перезапись (пункт будет заменён), поэтому не стоит использовать целые числа.

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

Удалить пункт и подпункт бокового меню можно с помощью функций "remove_menu_page" и "remove_submenu_page" соответственно. Функция для удаления верхнего пункта меню принимает только один аргумент - ярлык (slug), который был указан при создании пункта. А для удаления подменю надо указать ярлык для родительского и дочернего пункт одномременно:
remove_menu_page( $menu_slug );
remove_submenu_page( $menu_slug, $submenu_slug );
Продемонстрируем, как можно удалить пункт меню и подпункты:
add_action( 'admin_menu', 'remove_menu' );
function remove_menu(){
   remove_menu_page( 'plugins.php' ); // удалим закладку плагинов
   remove_submenu_page( 'plugins.php', 'myplugin' ); // удалим пункт со своим плагином
}
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: