Как создать настройки плагина в WordPress: пошаговое руководство

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

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

При разработке плагина часто возникает необходимость дать пользователю возможность изменять поведение или внешний вид через админ-панель. Без удобного интерфейса настройки плагин будет либо слишком жестко ограничен, либо пользователи будут вынуждены лезть в код, что плохо сказывается на опыте и безопасности.

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

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

Обзор WordPress Settings API

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

Основные функции:

  • add_options_page() — добавляет страницу в меню настроек админки;
  • register_setting() — регистрирует группу настроек и функцию валидации;
  • add_settings_section() — создаёт секцию (группу) настроек на странице;
  • add_settings_field() — добавляет поле для ввода данных в секцию.

Использование этого API гарантирует совместимость и правильное сохранение данных.

Пример: создание страницы настроек для плагина "WPWP Example"

Рассмотрим создание простого плагина с настройкой, позволяющей включать или отключать некоторую функцию.

1. Регистрация страницы настроек

function wpwp_register_settings_page() {
    add_options_page(
        'Настройки WPWP Example',
        'WPWP Example',
        'manage_options',
        'wpwp-example-settings',
        'wpwp_render_settings_page'
    );
}
add_action('admin_menu', 'wpwp_register_settings_page');

Здесь мы добавляем новую страницу в меню «Настройки».

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

function wpwp_register_settings() {
    register_setting('wpwp_example_options_group', 'wpwp_example_options', 'wpwp_validate_options');

    add_settings_section(
        'wpwp_main_section',
        'Основные настройки',
        'wpwp_main_section_callback',
        'wpwp-example-settings'
    );

    add_settings_field(
        'enable_feature',
        'Включить функцию',
        'wpwp_enable_feature_callback',
        'wpwp-example-settings',
        'wpwp_main_section'
    );
}
add_action('admin_init', 'wpwp_register_settings');

Здесь создаётся группа настроек, секция и поле с чекбоксом.

3. Отрисовка страницы настроек

function wpwp_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки WPWP Example</h1>
        <form method="post" action="options.php">
            <?php
                settings_fields('wpwp_example_options_group');
                do_settings_sections('wpwp-example-settings');
                submit_button();
            ?>
        </form>
    </div>
    <?php
}

4. Колбэки для секции и поля

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

function wpwp_enable_feature_callback() {
    $options = get_option('wpwp_example_options');
    $checked = isset($options['enable_feature']) ? checked(1, $options['enable_feature'], false) : '';
    echo "<input type='checkbox' name='wpwp_example_options[enable_feature]' value='1' $checked />";
}

5. Валидация данных

function wpwp_validate_options($input) {
    $output = array();
    $output['enable_feature'] = isset($input['enable_feature']) && $input['enable_feature'] == 1 ? 1 : 0;
    return $output;
}

Рекомендации по безопасности и удобству

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

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

Плагины для расширения функционала настроек

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

  • Options Framework — простой и популярный фреймворк для настроек;
  • Clearfy Pro — расширенный инструмент оптимизации с удобной панелью настроек;
  • WPRemark — плагин для отзывов с удобной системой настроек.

Как использовать настройки в коде плагина

После сохранения настроек доступ к ним можно получить через get_option('wpwp_example_options'). Например, чтобы проверить, включена ли функция:

$options = get_option('wpwp_example_options');
if (!empty($options['enable_feature'])) {
    // Ваша логика при включенной функции
}

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

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

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

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

Использование хуков для изменения заголовка страницы в WordPress
09.12.2025
Как создать собственный виджет в WordPress: подробное руководство
18.11.2025
Создание собственных REST API эндпоинтов в WordPress
03.12.2025
Как отключить AJAX подгрузку в WooCommerce
15.02.2026
WooCommerce: как использовать хуки для добавления собственного контента на страницы товара
26.04.2026