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

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

Почему важно создавать настройки для плагина в админке WordPress

Многие плагины предлагают множество функций, которые должны настраиваться под конкретные задачи сайта. Без удобного интерфейса настройки пользователю придётся менять код вручную или использовать устаревшие методы. Создание собственного меню и страницы настроек в админке решает эти проблемы:

  • Пользователь видит все параметры в одном месте;
  • Настройки сохраняются корректно и безопасно;
  • Можно использовать типовые элементы управления (чекбоксы, селекты, текстовые поля);
  • Упрощается поддержка и развитие плагина;
  • Повышается доверие и удобство для пользователей плагина.

Как добавить страницу настроек в меню админки WordPress

Для начала нужно зарегистрировать страницу настроек в меню. Делается это с помощью add_menu_page() или add_submenu_page(). Вот простой пример регистрации своей страницы настроек:

add_action('admin_menu', 'wpdir_add_plugin_settings_page');

function wpdir_add_plugin_settings_page() {
    add_menu_page(
        'Настройки моего плагина', // Заголовок страницы
        'Мой плагин',             // Название меню
        'manage_options',         // Возможности
        'wpdir-plugin-settings',  // Уникальный слаг
        'wpdir_render_settings_page', // Функция отображения
        'dashicons-admin-generic' // Иконка меню
    );
}

Здесь мы добавили верхнее меню с иконкой и указали функцию для вывода содержимого страницы.

Реализация функции вывода страницы настроек

Эта функция должна выводить HTML форму, в которой пользователь сможет менять параметры. Важный момент — использовать settings_fields() и do_settings_sections() для корректной работы безопасности и разметки.

function wpdir_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки моего плагина</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('wpdir_plugin_options_group');
            do_settings_sections('wpdir-plugin-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Регистрация настроек, секций и полей

Для того чтобы WordPress понимал, какие настройки мы хотим сохранить, нужно зарегистрировать их с помощью register_setting(), добавить секции (add_settings_section()) и поля (add_settings_field()).

add_action('admin_init', 'wpdir_register_settings');

function wpdir_register_settings() {
    register_setting('wpdir_plugin_options_group', 'wpdir_plugin_options', 'wpdir_sanitize_options');

    add_settings_section(
        'wpdir_main_section',
        'Основные настройки',
        'wpdir_main_section_callback',
        'wpdir-plugin-settings'
    );

    add_settings_field(
        'wpdir_text_field',
        'Текстовое поле',
        'wpdir_render_text_field',
        'wpdir-plugin-settings',
        'wpdir_main_section'
    );

    add_settings_field(
        'wpdir_checkbox_field',
        'Чекбокс',
        'wpdir_render_checkbox_field',
        'wpdir-plugin-settings',
        'wpdir_main_section'
    );
}

function wpdir_main_section_callback() {
    echo '<p>Настройте параметры плагина ниже.</p>';
}

function wpdir_render_text_field() {
    $options = get_option('wpdir_plugin_options');
    ?>
    <input type="text" name="wpdir_plugin_options[wpdir_text_field]" value="<?php echo esc_attr($options['wpdir_text_field'] ?? ''); ?>" />
    <?php
}

function wpdir_render_checkbox_field() {
    $options = get_option('wpdir_plugin_options');
    ?>
    <input type="checkbox" name="wpdir_plugin_options[wpdir_checkbox_field]" <?php checked(isset($options['wpdir_checkbox_field']), true); ?> />
    <?php
}

function wpdir_sanitize_options($input) {
    $output = [];
    if (isset($input['wpdir_text_field'])) {
        $output['wpdir_text_field'] = sanitize_text_field($input['wpdir_text_field']);
    }
    $output['wpdir_checkbox_field'] = isset($input['wpdir_checkbox_field']) ? true : false;
    return $output;
}

В этом примере создаются две настройки — текстовое поле и чекбокс, которые сохраняются в массиве опций wpdir_plugin_options. Функция wpdir_sanitize_options отвечает за очистку и валидацию данных перед сохранением.

Советы по улучшению UX настроек плагина

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

  • Разбивайте настройки на логические секции и вкладки, если их много;
  • Используйте описание для каждого поля, чтобы объяснить его назначение;
  • Добавляйте подсказки и предупреждения, если неправильные значения могут привести к ошибкам;
  • Поддерживайте стандартный стиль интерфейса WordPress для консистентности;
  • Если нужно, используйте JavaScript для динамического изменения настроек без перезагрузки страницы.

Пример добавления вкладок в страницу настроек

Для сложных плагинов часто требуется сделать несколько вкладок. Это можно реализовать с помощью GET-параметра и условного вывода. Например:

function wpdir_render_settings_page() {
    $tab = $_GET['tab'] ?? 'general';
    ?>
    <div class="wrap">
        <h1>Настройки моего плагина</h1>
        <h2 class="nav-tab-wrapper">
            <a href="?page=wpdir-plugin-settings&tab=general" class="nav-tab <?php echo $tab == 'general' ? 'nav-tab-active' : ''; ?>">Общие</a>
            <a href="?page=wpdir-plugin-settings&tab=advanced" class="nav-tab <?php echo $tab == 'advanced' ? 'nav-tab-active' : ''; ?>">Дополнительно</a>
        </h2>
        <form method="post" action="options.php">
            <?php
            if ($tab == 'general') {
                settings_fields('wpdir_plugin_options_group');
                do_settings_sections('wpdir-plugin-settings');
            } elseif ($tab == 'advanced') {
                settings_fields('wpdir_plugin_advanced_group');
                do_settings_sections('wpdir-plugin-settings-advanced');
            }
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

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

Использование популярных плагинов для управления настройками

Если не хочется писать всё с нуля, можно использовать библиотеки и фреймворки для создания настроек:

  • Clearfy Pro — плагин для оптимизации и настройки WordPress, который расширяет возможности админки;
  • Redux Framework — популярный PHP-фреймворк для создания сложных панелей настроек;
  • CMB2 — библиотека для создания метабоксов и настроек с удобным API.

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

Заключение

Создание удобной настройки для плагина в WordPress — обязательный навык для разработчика. Используя add_menu_page, register_setting, add_settings_section и add_settings_field, вы сможете сделать интерфейс понятным и безопасным. Не забывайте про валидацию данных и удобство пользователя. Это повысит качество вашего плагина и упростит его поддержку.

Если хотите углубиться, рекомендуем ознакомиться с документацией на официальном сайте WordPress.

Как создать адаптивный плагин WordPress с настройками
09.11.2025
WooCommerce: автоматическое изменение цены при низком остатке товара
27.06.2026
WooCommerce: автоматическое удаление товаров при нулевом остатке и без вариаций
15.06.2026
Как настроить выработку изображений в WordPress для улучшения производительности
10.01.2026
Как избежать проблем с кэширующими плагинами в WordPress
22.02.2026