В этой записи пойдет речь о том, как добавить основное меню в WordPress плагине.
Для добавления основного меню в админ панели WordPress используйте функцию add_menu_page().
<?php add_menu_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', string $icon_url = '', int $position = null );
Пример
Давайте представим, что вы хотите добавить новый пункт в меню «Bologer».
Первый этап — это создать функцию, которая будет выводить 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_menu_page( 'Bologer', 'Bologer настройки', 'manage_options', 'bologer', 'bologer_options_page_html', plugin_dir_url(__FILE__) . 'images/icon-bologer.png', 20 ); } add_action('admin_menu', 'bologer_options_page');
Для более конкретного описания функции, вы можете обратиться к официальной документации add_menu_page().
Используем PHP файл для вывода HTML
Лучшим вариантом будет, если вместо callback функции вы будите использовать PHP файл.
Чтобы указать файл, вы можете указать путь до файла в $menu_slug
и null
вместо callback функции:
<?php function wporg_options_page() { add_menu_page( 'WPOrg', 'WPOrg Options', 'manage_options', plugin_dir_path(__FILE__) . 'admin/view.php', null, plugin_dir_url(__FILE__) . 'images/icon_wporg.png', 20 ); } add_action('admin_menu', 'wporg_options_page');
Удалить основное меню
Для удаления основного меню в админ панели WordPress используйте функцию remove_menu_page():
<?php remove_menu_page( string $menu_slug );
Удаляя меню, вы не препятствуете прямому доступу к ним. Это никогда не должно быть использовано как способ ограничения пользовательских прав.
Пример
Давайте представим, что нам нужно удалить основное меню «Инструменты», сделать это можно следующим образом:
<?php function wporg_remove_options_page() { remove_menu_page('tools.php'); } add_action('admin_menu', 'wporg_remove_options_page', 99);
Важно, чтобы вы зарегистрировали меню используя хук admin_menu
, с более высоким приоритетом в add_action().