Как добавить меню и подменю в плагин WordPress: Полное руководство

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

Зачем добавлять меню и подменю в плагин?

Добавление меню и подменю улучшает взаимодействие пользователя с вашим плагином. Это позволяет:

  • Организовать функциональность: Группировать связанные настройки и функции в логические разделы.
  • Улучшить навигацию: Облегчить поиск необходимых опций.
  • Создать профессиональный интерфейс: Сделать плагин более привлекательным и удобным в использовании.

Основные концепции WordPress Admin Menu API

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

Необходимые знания и инструменты

Для успешной работы с WordPress Admin Menu API вам понадобятся:

  • Знание PHP.
  • Понимание основ разработки плагинов для WordPress.
  • Установленная среда разработки (например, XAMPP, Docker).
  • Текстовый редактор или IDE (например, VS Code, PHPStorm).

Добавление меню верхнего уровня в плагин

Использование функции add_menu_page()

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

Параметры функции add_menu_page(): разбор аргументов

add_menu_page(
    string   $page_title,
    string   $menu_title,
    string   $capability,
    string   $menu_slug,
    callable $callback = '',
    string   $icon_url = '',
    int      $position = null
);
  • $page_title: Заголовок страницы, отображаемый в браузере.
  • $menu_title: Текст, отображаемый в меню.
  • $capability: Права пользователя, необходимые для доступа к меню (например, manage_options).
  • $menu_slug: Уникальный идентификатор меню (используется в URL).
  • $callback: Функция, которая будет вызвана для отображения контента страницы меню.
  • $icon_url: URL иконки меню (Dashicon или собственный). Используйте '' для отсутствия иконки.
  • $position: Позиция меню в панели (целое число). Если не указано, меню будет добавлено в конец.

Пример кода: добавление базового меню

<?php
/**
 * Plugin Name: My Awesome Plugin
 * Description:  Adds a custom menu to the WordPress admin panel.
 * Version:      1.0.0
 */

add_action('admin_menu', 'my_plugin_menu');

/**
 * Registers the custom menu page.
 */
function my_plugin_menu(): void {
    add_menu_page(
        'My Plugin Page Title',
        'My Plugin Menu',
        'manage_options',
        'my-plugin-slug',
        'my_plugin_page_content',
        'dashicons-admin-tools',
        20
    );
}

/**
 * Displays the content of the menu page.
 */
function my_plugin_page_content(): void {
    echo '<h1>My Plugin Page</h1>';
    echo '<p>Welcome to my plugin settings page!</p>';
}

Настройка иконок меню: Dashicons и собственные изображения

WordPress предоставляет набор встроенных иконок, называемых Dashicons. Их можно использовать, указав имя иконки в параметре $icon_url. Список доступных Dashicons можно найти в официальной документации WordPress. Также можно использовать URL к собственному изображению.

Добавление подменю в существующее меню

Использование функции add_submenu_page()

Функция add_submenu_page() позволяет добавить подменю к существующему меню, как к меню WordPress по умолчанию, так и к созданному вами ранее.

Параметры функции add_submenu_page(): разбор аргументов

add_submenu_page(
    string   $parent_slug,
    string   $page_title,
    string   $menu_title,
    string   $capability,
    string   $menu_slug,
    callable $callback = ''
);
Реклама
  • $parent_slug: Идентификатор родительского меню (menu slug).
  • $page_title: Заголовок страницы, отображаемый в браузере.
  • $menu_title: Текст, отображаемый в подменю.
  • $capability: Права пользователя, необходимые для доступа к подменю.
  • $menu_slug: Уникальный идентификатор подменю (используется в URL).
  • $callback: Функция, которая будет вызвана для отображения контента страницы подменю.

Пример кода: добавление подменю к созданному меню

<?php
/**
 * Registers the custom submenu page.
 */
function my_plugin_menu(): void {
    add_menu_page(
        'My Plugin Page Title',
        'My Plugin Menu',
        'manage_options',
        'my-plugin-slug',
        'my_plugin_page_content',
        'dashicons-admin-tools',
        20
    );

    add_submenu_page(
        'my-plugin-slug',
        'My Submenu Page Title',
        'My Submenu',
        'manage_options',
        'my-plugin-submenu-slug',
        'my_plugin_submenu_content'
    );
}

/**
 * Displays the content of the submenu page.
 */
function my_plugin_submenu_content(): void {
    echo '<h1>My Submenu Page</h1>';
    echo '<p>This is the content of my submenu page.</p>';
}

Создание нескольких уровней подменю (если применимо и допустимо)

В WordPress нельзя создавать подменю третьего уровня. API поддерживает только один уровень подменю.

Реализация функциональности страниц меню и подменю

Создание функций обратного вызова (callback functions) для отображения контента

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

Безопасность: проверка прав доступа и nonce verification

Важно защищать страницы настроек плагина от несанкционированного доступа и подделки запросов. Используйте функцию current_user_can() для проверки прав доступа пользователя и nonce verification для защиты форм.

<?php
/**
 * Displays the content of the submenu page with capability check.
 */
function my_plugin_submenu_content(): void {
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
    }
    echo '<h1>My Submenu Page</h1>';
    echo '<p>This is the content of my submenu page.</p>';
}
?>

Обработка данных форм на страницах меню

Для обработки данных форм используйте стандартные методы PHP, такие как $_POST и $_GET. Не забудьте о валидации и очистке данных перед сохранением.

Использование WordPress Settings API для хранения настроек

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

Расширенные возможности и лучшие практики

Динамическое добавление меню и подменю (например, на основе настроек)

Можно динамически добавлять меню и подменю в зависимости от настроек плагина или роли пользователя. Это позволяет создавать более гибкие и персонализированные интерфейсы.

Организация кода: классы и функции для чистоты и удобства поддержки

Для больших плагинов рекомендуется использовать классы и функции для организации кода. Это облегчит поддержку и расширение плагина в будущем.

Локализация меню и подменю для поддержки разных языков

Используйте функции интернационализации WordPress (i18n) для перевода текста меню и подменю на разные языки. Это сделает ваш плагин доступным для более широкой аудитории.

Устранение неполадок и отладка: распространенные ошибки и способы их решения

Наиболее распространенные ошибки при работе с Admin Menu API включают неправильные параметры функций, неверные права доступа и ошибки в callback-функциях. Используйте инструменты отладки WordPress (например, WP_DEBUG) для выявления и исправления ошибок.


Добавить комментарий