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

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

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

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

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

Кроме того, правильно реализованная страница настроек обеспечивает валидацию и защиту от CSRF-атак благодаря nonce и проверкам прав.

Регистрация страницы настроек в меню админ-панели

Для добавления страницы в меню используйте хук admin_menu и функцию add_options_page() (если страница будет в разделе «Настройки») или add_menu_page() для отдельного раздела меню.

Пример кода регистрации страницы настроек для плагина wpaction:

function wpaction_add_settings_page() {
    add_options_page(
        'Настройки WPAction', // Заголовок страницы
        'WPAction Настройки',  // Название в меню
        'manage_options',      // Права доступа
        'wpaction-settings',   // Уникальный слаг
        'wpaction_render_settings_page' // Функция вывода
    );
}
add_action('admin_menu', 'wpaction_add_settings_page');

В данном примере страница появится в меню «Настройки».

Создание формы и добавление полей настроек

Для управления настройками используйте WordPress Settings API. Это позволит автоматически создавать поля, обрабатывать их и сохранять в опциях.

Основные шаги:

  • Зарегистрировать настройку с помощью register_setting().
  • Добавить секцию с помощью add_settings_section().
  • Добавить поля с помощью add_settings_field().

Пример регистрации настроек и полей:

function wpaction_register_settings() {
    register_setting('wpaction_options_group', 'wpaction_options', 'wpaction_sanitize_options');

    add_settings_section(
        'wpaction_main_section',
        'Основные настройки',
        'wpaction_main_section_cb',
        'wpaction-settings'
    );

    add_settings_field(
        'wpaction_api_key',
        'API ключ',
        'wpaction_api_key_render',
        'wpaction-settings',
        'wpaction_main_section'
    );
}
add_action('admin_init', 'wpaction_register_settings');

function wpaction_main_section_cb() {
    echo '<p>Введите параметры для подключения к API.</p>';
}

function wpaction_api_key_render() {
    $options = get_option('wpaction_options');
    ?>
    <input type='text' name='wpaction_options[api_key]' value='<?php echo isset($options['api_key']) ? esc_attr($options['api_key']) : ''; ?>' size='50'>
    <?php
}

Вывод формы на странице настроек

Функция, которая выводит страницу настроек, должна содержать HTML формы с вызовом функций Settings API для безопасности и автоматической обработки:

function wpaction_render_settings_page() {
    ?>
    <div class='wrap'>
        <h1>Настройки WPAction</h1>
        <form action='options.php' method='post'>
            <?php
            settings_fields('wpaction_options_group');
            do_settings_sections('wpaction-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Обработка и очистка данных настроек

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

function wpaction_sanitize_options($input) {
    $sanitized = array();

    if (isset($input['api_key'])) {
        $sanitized['api_key'] = sanitize_text_field($input['api_key']);
    }

    return $sanitized;
}

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

Пример расширенных настроек с чекбоксами и селектами

Часто нужны не только текстовые поля, но и другие типы — чекбоксы, селекты, радиокнопки.

Добавим пример поля с чекбоксом включения логирования:

function wpaction_logging_render() {
    $options = get_option('wpaction_options');
    ?>
    <input type='checkbox' name='wpaction_options[enable_logging]' value='1' <?php checked(1, isset($options['enable_logging']) ? $options['enable_logging'] : 0); ?> > Включить логирование
    <?php
}

// Добавление поля
add_settings_field(
    'wpaction_enable_logging',
    'Логирование',
    'wpaction_logging_render',
    'wpaction-settings',
    'wpaction_main_section'
);

Для селектов и радиокнопок принцип аналогичен — выводите HTML с нужными атрибутами и проверяете выбранные значения.

Практические советы и рекомендации

  • Используйте уникальные префиксы для функций и опций, чтобы избежать конфликтов с другими плагинами.
  • Для хранения настроек лучше использовать один массив с опциями, чем много отдельных опций — это упрощает код и уменьшает нагрузку на базу.
  • Добавляйте проверки прав доступа (current_user_can('manage_options')) в функции вывода и обработки.
  • Не забывайте про защиту форм с помощью settings_fields(), которая выводит nonce-поля.
  • Для сложных интерфейсов можно использовать JavaScript и React, но начинайте с простого PHP.

Заключение

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

Если хотите расширить функционал, обратите внимание на плагин Clearfy Pro, который помогает оптимизировать WordPress и управлять настройками сайта.

Как создать автоматические сборки контента в WordPress
01.03.2026
Как добавить поддержку JSON-LD в WordPress для улучшения SEO
11.01.2026
Обработка AJAX запросов в WordPress с примерами кода
21.11.2025
Оптимизация базы данных WordPress: как ускорить сайт и снизить нагрузку
14.11.2025
Оптимизация кода WordPress: как найти и удалить неиспользуемые хуки
24.01.2026