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

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

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

Settings API — это встроенный в WordPress набор функций и хуков, который упрощает создание страниц настроек, обработку данных и сохранение их в базе. Он обеспечивает:

  • Автоматическую валидацию и защиту данных;
  • Стандартизированный интерфейс для добавления настроек;
  • Интеграцию с системой ролей и прав доступа;
  • Хорошую совместимость с будущими версиями WordPress.

Использование Settings API позволяет избежать ошибок в безопасности и упрощает поддержку кода.

Создаем базовый плагин и подключаем страницу настроек

Начнем с создания минимального плагина. Создайте папку wplite-settings в директории wp-content/plugins и файл wplite-settings.php с таким кодом:

<?php
/**
 * Plugin Name: WPLite Settings Example
 * Description: Пример создания панели настроек для плагина
 * Version: 1.0
 * Author: WPLite.ru
 */

// Добавляем меню в админку
add_action('admin_menu', 'wplite_add_settings_page');
function wplite_add_settings_page() {
    add_options_page(
        'Настройки WPLite',
        'WPLite Settings',
        'manage_options',
        'wplite-settings',
        'wplite_render_settings_page'
    );
}

// Рендерим страницу настроек
function wplite_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки плагина WPLite</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('wplite_settings_group');
            do_settings_sections('wplite-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

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

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

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

add_action('admin_init', 'wplite_register_settings');
function wplite_register_settings() {
    // Регистрируем настройку
    register_setting('wplite_settings_group', 'wplite_text_option', array(
        'type' => 'string',
        'sanitize_callback' => 'sanitize_text_field',
        'default' => '',
    ));

    // Добавляем секцию
    add_settings_section(
        'wplite_main_section',
        'Основные настройки',
        'wplite_main_section_cb',
        'wplite-settings'
    );

    // Добавляем поле
    add_settings_field(
        'wplite_text_option',
        'Текстовое поле',
        'wplite_text_option_cb',
        'wplite-settings',
        'wplite_main_section'
    );
}

// Колбэк для описания секции
function wplite_main_section_cb() {
    echo '<p>Настройте параметры плагина здесь.</p>';
}

// Колбэк для поля ввода
function wplite_text_option_cb() {
    $value = get_option('wplite_text_option', '');
    echo '<input type="text" name="wplite_text_option" value="' . esc_attr($value) . '" class="regular-text" />';
}

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

Расширяем настройки: добавляем чекбокс и выпадающий список

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

add_action('admin_init', 'wplite_register_more_settings');
function wplite_register_more_settings() {
    // Чекбокс
    register_setting('wplite_settings_group', 'wplite_checkbox_option', array(
        'type' => 'boolean',
        'sanitize_callback' => 'wplite_sanitize_checkbox',
        'default' => false,
    ));

    add_settings_field(
        'wplite_checkbox_option',
        'Включить функцию',
        'wplite_checkbox_option_cb',
        'wplite-settings',
        'wplite_main_section'
    );

    // Селект
    register_setting('wplite_settings_group', 'wplite_select_option', array(
        'type' => 'string',
        'sanitize_callback' => 'wplite_sanitize_select',
        'default' => 'option1',
    ));

    add_settings_field(
        'wplite_select_option',
        'Выберите опцию',
        'wplite_select_option_cb',
        'wplite-settings',
        'wplite_main_section'
    );
}

// Санитайзеры
function wplite_sanitize_checkbox($input) {
    return ($input === '1') ? true : false;
}

function wplite_sanitize_select($input) {
    $valid = array('option1', 'option2', 'option3');
    if (in_array($input, $valid, true)) {
        return $input;
    }
    return 'option1';
}

// Рендер полей
function wplite_checkbox_option_cb() {
    $checked = get_option('wplite_checkbox_option', false);
    echo '<input type="checkbox" name="wplite_checkbox_option" value="1" ' . checked(1, $checked, false) . ' />';
}

function wplite_select_option_cb() {
    $value = get_option('wplite_select_option', 'option1');
    $options = array(
        'option1' => 'Опция 1',
        'option2' => 'Опция 2',
        'option3' => 'Опция 3',
    );
    echo '<select name="wplite_select_option">';
    foreach ($options as $key => $label) {
        printf('<option value="%s" %s>%s</option>', esc_attr($key), selected($value, $key, false), esc_html($label));
    }
    echo '</select>';
}

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

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

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

$text = get_option('wplite_text_option', '');
echo 'Вы ввели: ' . esc_html($text);

Или проверить состояние чекбокса:

$enabled = get_option('wplite_checkbox_option', false);
if ($enabled) {
    // Ваша логика, если функция включена
}

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

Советы по безопасности и UX при создании настроек

При работе с настройками важно:

  • Использовать функции санитайзинга, например sanitize_text_field или кастомные проверки;
  • Проверять права пользователя с помощью current_user_can('manage_options');
  • Добавлять подсказки и описания для полей, чтобы пользователь понимал, что именно настраивает;
  • Использовать стандартные элементы интерфейса WordPress для единообразия.

Хороший UX снижает количество ошибок и повышает доверие к плагину.

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

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

  • Redux Framework — мощный фреймворк для создания настроек с множеством типов полей и удобным интерфейсом.
  • CMB2 — библиотека для создания метабоксов и настроек с простым API.
  • OptionTree — плагин для создания настроек с визуальным редактором.

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

Заключение

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

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

Как автоматически удалять старые черновики в WordPress
04.04.2026
Как использовать хук WooCommerce before_add_to_cart для дополнительной логики в корзине
14.05.2026
Как использовать метод WPLite в WordPress для оптимизации кода
12.01.2026
Оптимизация загрузки картинок в WordPress без потери качества
13.12.2025
Как удалить или изменить метаданные пользователя в WordPress
24.01.2026