В этой записи пойдет речь о том, как добавить подменю в WordPress плагине.
Для добавления подменю в админ панели WordPress вы можете воспользоваться функцией add_submenu_page().
<?php add_submenu_page( string $parent_slug, string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '' );
Пример
Давайте представим, что вам нужно добавить подменю «Bologer настройки» в основное меню «Tools».
Первый этап — это создать функцию, которая будет выводить HTML. Внутри этой функции мы будем проверять безопасность и отображать настройки, которые нужно будет создать используя API настроек.
Я рекомендую обертывать весь HTML внутри функции в
<div>
с классомwrap
.
<?php function bologer_options_page_html() { // проверить права пользователя if (!current_user_can('manage_options')) { return; } ?> <div class="wrap"> <h1><?= esc_html(get_admin_page_title()); ?></h1> <form action="options.php" method="post"> <?php // выводим поля, которые сделают bologer_options безопасными settings_fields('bologer_options'); // выводим секцию настроек и её поля // (секция зарегистрирована под "bologer", каждое поле зарегистрированое под этим ключом будет выводиться тут) do_settings_sections('bologer'); // выводим кнопку сохранения submit_button('Сохранить'); ?> </form> </div> <?php }
Второй этап — это зарегистрировать подменю «Bologer настройки» в основном меню «Инструменты». Для регистрации используйте хук admin_menu
:
<?php function bologer_options_page() { add_submenu_page( 'tools.php', 'Bologer настройки', 'Bologer настройки', 'manage_options', 'bologer', 'bologer_options_page_html' ); } add_action('admin_menu', 'bologer_options_page');
Для более конкретного описания функции, вы можете обратиться к официальной документации add_submenu_page().
Стандартные подменю
Было бы круто, если бы были функции помощники для $parent_slug для стандартным основных меню в WordPress. К счастью такое уже есть, ниже вы можете посмотреть полный список:
- add_dashboard_page() —
index.php
- add_posts_page() —
edit.php
- add_media_page() —
upload.php
- add_pages_page() —
edit.php?post_type=page
- add_comments_page() —
edit-comments.php
- add_theme_page() —
themes.php
- add_plugins_page() —
plugins.php
- add_users_page() —
users.php
- add_management_page() —
tools.php
- add_options_page() —
options-general.php
- add_options_page() —
settings.php
- add_links_page() —
link-manager.php
– нужен плагин с поддержкой WP 3.5+ - Собственный формат поста —
edit.php?post_type=wporg_post_type
- Настройки сети —
settings.php
Удаление подменю
Процесс удаления подменю точно такое же как и в удалении основного меню.