- add_menu_page - добавляет пункт меню верхнего уровня
- add_submenu_page - добавляет пункт меню на втором уровне
- remove_menu_page - удаляет пункт меню верхнего уровня
- remove_submenu_page - удаляет пункт меню второго уровня
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 Разделитель |
<?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' ); // удалим пункт со своим плагином
}