Функция ADD_SUBMENU_PAGE() в WordPress: руководство по добавлению подменю

Функция ADD_SUBMENU_PAGE() в WordPress

С помощью функции ADD_SUBMENU_PAGE() вы можете добавить подменю в админ-панели WordPress. Эта функция требует указания прав доступа, которые будут использоваться для определения, имеет ли пользователь право видеть это подменю.

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

Возвращаемое значение

Функция возвращает строку с hook_suffix для новой страницы или false, если у пользователя нет необходимых прав дос��упа.

Синтаксис

add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $callback, $position );

Параметры

  • $parent_slug (строка, обязательный) — Слаг родительского меню (или имя файла стандартной страницы админки WordPress).
  • $page_title (строка, обязательный) — Текст, отображаемый в заголовке страницы, когда меню выбрано.
  • $menu_title (строка, обязательный) — Текст, который будет использоваться для меню.
  • $capability (строка, обязательный) — Права доступа, необходимые для отображения этого меню пользователю.
  • $menu_slug (строка, обязательный) — Уникальный слаг для данного меню. Должен содержать только строчные буквы, цифры, дефисы и символы подчеркивания.
  • $callback (функция) — Функция, которая будет вызываться для вывода содержимого страницы. По умолчанию пусто.
  • $position (число) — Позиция в порядке меню, на которой элемент должен появиться. По умолчанию null.

Примеры

Пример 1: Добавление подменю в меню "Инструменты"

Чтобы добавить подменю в меню "Инструменты" админ-панели, выполните следующий код:

add_action( 'admin_menu', 'register_my_custom_submenu_page' );

function register_my_custom_submenu_page() {
    add_submenu_page(
        'tools.php',
        'Дополнительная страница инструмента',
        'Имя инструмента',
        'manage_options',
        'my-custom-submenu-page',
        'my_custom_submenu_page_callback'
    );
}

// Содержимое страницы
function my_custom_submenu_page_callback() {
    ?>
    

Пример 2: Скрытие страницы в меню

Чтобы скрыть элемент подменю из основного админ-меню, установите параметр $parent_slug в null или options.php:

add_action( 'admin_menu', 'register_my_custom_submenu_page' );

function register_my_custom_submenu_page() {
    add_submenu_page(
        'options.php',
        'Произвольная подстраница',
        'Произвольная подстраница',
        'manage_options',
        'my-custom-submenu-page',
        'my_custom_submenu_page_callback'
    );
}

// Содержимое страницы
function my_custom_submenu_page_callback() {
    ?>
    

Скрытый заголовок страницы

Теперь, перейдя по адресу /wp-admin/tools.php?page=my-custom-submenu-page, вы увидите страницу, но она не будет видна в админ-меню.

Пример 3: Добавление страницы настроек

Можно добавить страницу настроек, которая не требует отдельной функции для вывода:

add_action( 'admin_menu', 'add_options_page' );

function add_options_page() {
    add_submenu_page(
        'options-general.php',
        'Заголовок страницы',
        'Имя элемента меню',
        'manage_options',
        basename( __DIR__ ) . '/options.php'
    );
}

Здесь basename( __DIR__ ) . '/options.php' соответствует пути к файлу настроек вашего плагина.

Примечания

  • Глобальные массивы:
    • $submenu
    • $menu
    • $_wp_real_parent_file
    • $_wp_submenu_nopriv
    • $_registered_pages
    • $_parent_pages

Изменения

Функция была внедрена в версии 1.5.0, параметр $position добавлен в версии 5.3.0.

Использование возвращаемого hook_suffix

Функция возвращает hook_suffix, который можно использовать в хуке load-(page_hook):

$hookname = add_submenu_page(
    'options-general.php', 
    $page_title, 
    $menu_title, 
    $capability, 
    $menu_slug, 
    $callback, 
    $position
);

add_action( "load-{$hookname}", 'my_admin_load' );

function my_admin_load() {
    // Выполните необходимые действия здесь
}

Теперь вы знаете, как добавлять подменю в админ-панели WordPress. Эта информация поможет вам в разработке собственных плагинов и тем, упрощая процесс управления меню.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *