add_menu_page()

Добавляет страницу верхнего уровня в меню
Функция WordPress
INT 1.5.0
WordPress Icon

Описание функции

Функция add_menu_page() используется для добавления верхнего уровня страницы меню в административной панели WordPress.

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

Использование

add_menu_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $callback = '', string $icon_url = '', int|float $position = null ): string

Код выше добавляет новую страницу меню в административную панель WordPress.

Параметры:

  • $page_title (обязательный) — Текст, который будет отображаться в тегах заголовка страницы при выборе данного меню.
  • $menu_title (обязательный) — Текст, который будет использоваться для названия меню.
  • $capability (обязательный) — Требуемая возможность для отображения данного меню пользователю.
  • $menu_slug (обязательный) — Уникальное имя, по которому будет ссылаться данное меню. Должно содержать только строчные буквы, цифры, дефисы и символы подчеркивания, чтобы быть совместимым с функцией sanitize_key().
  • $callback (необязательный) — Функция, которая будет вызываться для вывода содержимого данной страницы. По умолчанию: пустая строка.
  • $icon_url (необязательный) — URL иконки, которая будет использоваться для данного меню. Можно передать base64-кодированное изображение SVG с помощью data URI, которое будет окрашено в соответствии с цветовой схемой. Должно начинаться с «data:image/svg+xml;base64,». Можно также передать имя класса помощника Dashicons для использования шрифтовой иконки, например, «dashicons-chart-pie». Передача «none» оставит div.wp-menu-image пустым, чтобы иконку можно было добавить с помощью CSS. По умолчанию: пустая строка.
  • $position (необязательный) — Позиция в порядке меню, на которой должен появиться данный пункт. По умолчанию: null.

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

<?php
/**
 * Добавление новой страницы меню в административную панель WordPress.
 */
function my_custom_menu_page() {
    // Добавление страницы меню
    $page_hook = add_menu_page(
        'Моя страница', // Заголовок страницы
        'Мое меню', // Название меню
        'manage_options', // Требуемая возможность
        'my-custom-menu', // Уникальное имя меню
        'my_custom_menu_callback', // Функция обратного вызова для вывода содержимого страницы
        'dashicons-admin-generic', // Иконка меню
        10 // Позиция меню
    );
    
    // Добавление действий на хук страницы
    add_action( 'load-' . $page_hook, 'my_custom_menu_actions' );
}
/**
 * Функция обратного вызова для вывода содержимого страницы меню.
 */
function my_custom_menu_callback() {
    // Вывод содержимого страницы меню
    echo '<h1>Моя страница</h1>';
    echo '<p>Привет, мир!</p>';
}
/**
 * Дополнительные действия на странице меню.
 */
function my_custom_menu_actions() {
    // Добавление дополнительных действий
    // ...
}
// Добавление страницы меню при инициализации административной панели
add_action( 'admin_menu', 'my_custom_menu_page' );
?>

В приведенном выше примере кода создается новая страница меню с заголовком «Моя страница» и названием «Мое меню». Для отображения данного меню пользователю требуется возможность «manage_options». Уникальное имя меню установлено как «my-custom-menu». Функция обратного вызова «my_custom_menu_callback()» используется для вывода содержимого страницы меню. Иконка меню установлена как «dashicons-admin-generic». Позиция меню установлена как 10.

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

Примеры использования

Создание основного меню


function my_menu_page() {
    add_menu_page(
        'My Menu Page', // $page_title
        'My Menu', // $menu_title
        'manage_options', // $capability
        'my-menu', // $menu_slug
        'my_menu_callback', // $callback
        'dashicons-admin-generic', // $icon_url
        4 // $position
    );
}
add_action( 'admin_menu', 'my_menu_page' );
function my_menu_callback() {
    echo '<h1>Welcome to My Menu Page</h1>';
}

Добавление подменю


function my_submenu_page() {
    add_menu_page(
        'My Menu Page', // $page_title
        'My Menu', // $menu_title
        'manage_options', // $capability
        'my-menu', // $menu_slug
        'my_menu_callback', // $callback
        'dashicons-admin-generic', // $icon_url
        4 // $position
    );
    add_submenu_page(
        'my-menu', // $parent_slug
        'My Submenu Page', // $page_title
        'My Submenu', // $menu_title
        'manage_options', // $capability
        'my-submenu', // $menu_slug
        'my_submenu_callback' // $callback
    );
}
add_action( 'admin_menu', 'my_submenu_page' );
function my_submenu_callback() {
    echo '<h1>Welcome to My Submenu Page</h1>';
}

Установка иконки для меню


function my_menu_page() {
    add_menu_page(
        'My Menu Page', // $page_title
        'My Menu', // $menu_title
        'manage_options', // $capability
        'my-menu', // $menu_slug
        'my_menu_callback', // $callback
        'dashicons-admin-generic', // $icon_url
        4 // $position
    );
}
add_action( 'admin_menu', 'my_menu_page' );
function my_menu_callback() {
    echo '<h1>Welcome to My Menu Page</h1>';
}

Изменение порядка отображения меню


function my_menu_page() {
    add_menu_page(
        'My Menu Page', // $page_title
        'My Menu', // $menu_title
        'manage_options', // $capability
        'my-menu', // $menu_slug
        'my_menu_callback', // $callback
        'dashicons-admin-generic', // $icon_url
        4 // $position
    );
}
add_action( 'admin_menu', 'my_menu_page' );
function my_menu_callback() {
    echo '<h1>Welcome to My Menu Page</h1>';
}

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


function my_menu_page() {
    add_menu_page(
        'My Menu Page', // $page_title
        'My Menu', // $menu_title
        'manage_options', // $capability
        'my-menu', // $menu_slug
        'my_menu_callback', // $callback
        'dashicons-admin-generic', // $icon_url
        4 // $position
    );
}
add_action( 'admin_menu', 'my_menu_page' );
function my_menu_callback() {
    echo '<h1>Welcome to My Menu Page</h1>';
}

Вопросы и ответы

Как добавить верхний уровень меню?

Для добавления верхнего уровня меню в WordPress используется функция add_menu_page(). Она принимает несколько параметров, включая заголовок страницы, текст для меню, требуемые права доступа и другие.


add_menu_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $callback = '', string $icon_url = '', int|float $position = null ): string

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

Как изменить текст в заголовке меню?

Чтобы изменить текст в заголовке меню, нужно передать соответствующий параметр $menu_title при вызове функции add_menu_page().


add_menu_page( 'New Page Title', 'New Menu Title', 'manage_options', 'my-menu', 'my_menu_callback' );

В данном примере текст в заголовке меню будет изменен на «New Menu Title».

Как изменить требуемые права доступа для отображения меню?

Для изменения требуемых прав доступа для отображения меню нужно указать соответствующий параметр $capability при вызове функции add_menu_page().


add_menu_page( 'Page Title', 'Menu Title', 'edit_posts', 'my-menu', 'my_menu_callback' );

В данном примере меню будет отображаться только пользователям с правами доступа «edit_posts».

Как задать уникальный идентификатор для меню?

Чтобы задать уникальный идентификатор для меню, необходимо использовать параметр $menu_slug функции add_menu_page(). Этот идентификатор должен быть уникальным для каждой страницы меню и содержать только строчные буквы, цифры, дефисы и подчеркивания.

Пример:


add_menu_page(
    'Page Title', // Заголовок страницы
    'Menu Title', // Заголовок меню
    'manage_options', // Необходимая роль пользователя
    'my-menu', // Уникальный идентификатор меню
    'my_menu_callback', // Функция для вывода содержимого страницы меню
    'dashicons-chart-pie', // Иконка меню
    10 // Позиция в меню
);

Как указать функцию для вывода содержимого страницы меню?

Для указания функции, которая будет выводить содержимое страницы меню, используется параметр $callback функции add_menu_page(). Эта функция должна быть определена заранее и принимать необходимые параметры.

Пример:


function my_menu_callback() {
    echo 'This is the content of my menu page.';
}
add_menu_page(
    'Page Title',
    'Menu Title',
    'manage_options',
    'my-menu',
    'my_menu_callback',
    'dashicons-chart-pie',
    10
);

Как добавить иконку к меню?

Для добавления иконки к меню используется параметр $icon_url функции add_menu_page(). Вы можете использовать URL-адрес иконки или указать имя класса Dashicons для использования шрифтовой иконки.

Пример:


add_menu_page(
    'Page Title',
    'Menu Title',
    'manage_options',
    'my-menu',
    'my_menu_callback',
    'dashicons-chart-pie', // Использование Dashicons
    10
);
add_menu_page(
    'Page Title',
    'Menu Title',
    'manage_options',
    'my-menu',
    'my_menu_callback',
    'https://example.com/icon.svg', // Использование URL-адреса иконки
    10
);

Как изменить порядок отображения меню?

Для изменения порядка отображения меню в WordPress можно использовать параметр $position функции add_menu_page(). Этот параметр принимает значение типа int или float, которое указывает позицию элемента в порядке меню.

Например, чтобы установить порядок отображения меню на третьем месте, можно использовать следующий код:


add_menu_page( 'Page Title', 'Menu Title', 'manage_options', 'menu-slug', 'callback_function', '', 3 );

Как удалить иконку из меню?

Для удаления иконки из меню в WordPress можно использовать параметр $icon_url функции add_menu_page(). Этот параметр принимает значение типа string и позволяет указать URL иконки или класс Dashicons для иконки.

Чтобы удалить иконку из меню, нужно передать пустую строку в качестве значения параметра $icon_url. Например:


add_menu_page( 'Page Title', 'Menu Title', 'manage_options', 'menu-slug', 'callback_function', '', null );

Как получить идентификатор страницы меню?

Для получения идентификатора страницы меню в WordPress можно использовать возвращаемое значение функции add_menu_page(). Это значение представляет собой хук (hook) страницы меню.

Например, чтобы получить идентификатор страницы меню, можно использовать следующий код:


$menu_page = add_menu_page( 'Page Title', 'Menu Title', 'manage_options', 'menu-slug', 'callback_function' );
$menu_page_hook = $menu_page;

Функция add_menu_page() в WordPress позволяет добавить верхний уровень меню. Она принимает несколько параметров, включая заголовок страницы, заголовок меню, требуемую возможность для отображения меню, уникальный идентификатор меню и функцию для вывода содержимого страницы. С помощью параметров $position и $icon_url можно изменить порядок отображения меню и удалить иконку из меню соответственно. Возвращаемое значение функции представляет собой хук страницы меню, который можно использовать для дальнейшей работы с этой страницей.

Связанные элементы

  • Функция add_submenu_page(): добавляет подстраницу в меню.
  • Функция remove_menu_page(): удаляет пункт меню из административной панели.
  • Функция remove_submenu_page(): удаляет подстраницу из меню.
  • Функция get_admin_page_title(): возвращает заголовок текущей страницы административной панели.
  • Хук admin_menu: вызывается при создании меню административной панели.
  • Класс WP_Admin_Bar: предоставляет методы для работы с панелью инструментов администратора.
  • Класс WP_Screen: предоставляет информацию о текущем экране административной панели.
Обсуждение