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

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

Почему важно использовать Options API для хранения настроек

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

Использование Options API упрощает работу с настройками и снижает риск конфликтов с другими компонентами сайта. Кроме того, это встроенный инструмент WordPress, который обеспечивает безопасность и валидность данных при правильной реализации.

Для примера создадим плагин wpengine-settings, который добавляет страницу настроек в меню «Настройки».

Создание страницы настроек плагина в админке WordPress

Первый шаг — зарегистрировать страницу настроек, которая будет отображаться в меню админки. Для этого используем хук admin_menu:

add_action('admin_menu', 'wpengine_settings_add_admin_menu');
function wpengine_settings_add_admin_menu() {
    add_options_page(
        'Настройки WPengine', // Заголовок страницы
        'WPengine Settings',    // Название меню
        'manage_options',       // Права доступа
        'wpengine_settings',    // Уникальный slug
        'wpengine_settings_page'// Функция вывода страницы
    );
}

Функция add_options_page создаёт раздел в меню «Настройки». Далее определим функцию вывода страницы wpengine_settings_page:

function wpengine_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки WPengine</h1>
        <form action="options.php" method="post">
            <?php
            settings_fields('wpengine_settings_group');
            do_settings_sections('wpengine_settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Здесь мы используем стандартные функции settings_fields и do_settings_sections, которые автоматически добавляют скрытые поля безопасности и выводят зарегистрированные секции и поля настроек.

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

Для регистрации настроек воспользуемся хуком admin_init. Здесь мы зарегистрируем группу настроек, добавим секцию и поля с валидацией:

add_action('admin_init', 'wpengine_settings_init');
function wpengine_settings_init() {
    // Регистрируем группу настроек
    register_setting('wpengine_settings_group', 'wpengine_settings_options', 'wpengine_settings_validate');

    // Добавляем секцию
    add_settings_section(
        'wpengine_settings_section',
        'Основные настройки',
        'wpengine_settings_section_callback',
        'wpengine_settings'
    );

    // Добавляем поля
    add_settings_field(
        'wpengine_text_field',
        'Текстовое поле',
        'wpengine_text_field_render',
        'wpengine_settings',
        'wpengine_settings_section'
    );

    add_settings_field(
        'wpengine_checkbox_field',
        'Чекбокс',
        'wpengine_checkbox_field_render',
        'wpengine_settings',
        'wpengine_settings_section'
    );
}

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

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

function wpengine_checkbox_field_render() {
    $options = get_option('wpengine_settings_options');
    ?>
    <input type="checkbox" name="wpengine_settings_options[wpengine_checkbox_field]" <?php checked(isset($options['wpengine_checkbox_field']), 1); ?> value="1" />
    <?php
}

Валидация и очистка данных

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

function wpengine_settings_validate($input) {
    $output = [];

    if (isset($input['wpengine_text_field'])) {
        $output['wpengine_text_field'] = sanitize_text_field($input['wpengine_text_field']);
    }

    $output['wpengine_checkbox_field'] = !empty($input['wpengine_checkbox_field']) ? 1 : 0;

    return $output;
}

Здесь мы используем sanitize_text_field для очистки текстового поля и преобразуем чекбокс в 0 или 1.

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

После сохранения настроек вы можете получить их так:

$options = get_option('wpengine_settings_options');
$text = $options['wpengine_text_field'] ?? '';
$checked = !empty($options['wpengine_checkbox_field']);

Например, можно вывести значения на фронтенде или использовать их в логике плагина.

Продвинутые советы по созданию настроек

Добавление полей с выбором и цветовых селекторов

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

function wpengine_color_field_render() {
    $options = get_option('wpengine_settings_options');
    ?>
    <input type="text" name="wpengine_settings_options[color_field]" value="<?php echo esc_attr($options['color_field'] ?? '#000000'); ?>" class="wp-color-picker-field" data-default-color="#000000" />
    <?php
}

add_action('admin_enqueue_scripts', function() {
    wp_enqueue_style('wp-color-picker');
    wp_enqueue_script('wp-color-picker');
});

Это добавит удобный выбор цвета с помощью стандартного WordPress color picker.

Использование библиотек и готовых решений

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

Безопасность и права доступа

Обязательно проверяйте права доступа пользователя с помощью current_user_can('manage_options'), чтобы не допустить несанкционированное изменение настроек.

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

Итог

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

Пример кода из статьи можно использовать как шаблон для своих проектов и дополнить по необходимости.

Как использовать хуки и фильтры в WordPress для кастомизации сайта
18.11.2025
Как создать настройки для плагина с хранением в options WordPress
20.12.2025
Как использовать REST API в WordPress для создания плагинов
25.11.2025
Как использовать Redis в WordPress на WPengine для улучшения кэширования
23.03.2026
Как отключить Gutenberg в WordPress: лучшие способы и практические примеры
03.12.2025