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

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

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

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

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

Для начала нужно понимать, что WordPress предоставляет несколько функций для работы с настройками:

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

Для начала создадим меню в админке, в котором будет отображаться наша страница настроек. Для этого используем хук admin_menu и функцию add_options_page().

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

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

Здесь мы создаём пункт меню в разделе «Настройки».

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

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

function wpdesk_register_settings() {
    register_setting('wpdesk_options_group', 'wpdesk_options', 'wpdesk_sanitize_options');

    add_settings_section(
        'wpdesk_main_section',
        'Основные настройки',
        'wpdesk_section_callback',
        'wpdesk-plugin-settings'
    );

    add_settings_field(
        'wpdesk_text_field',
        'Текстовое поле',
        'wpdesk_text_field_render',
        'wpdesk-plugin-settings',
        'wpdesk_main_section'
    );
}
add_action('admin_init', 'wpdesk_register_settings');

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

Рендеринг полей и секций

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

function wpdesk_section_callback() {
    echo '<p>Здесь вы можете настроить параметры плагина WPDesk.</p>';
}

function wpdesk_text_field_render() {
    $options = get_option('wpdesk_options');
    ?>
    <input type='text' name='wpdesk_options[wpdesk_text_field]' value='<?php echo isset($options['wpdesk_text_field']) ? esc_attr($options['wpdesk_text_field']) : ''; ?>' />
    <?php
}

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

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

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

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

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

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

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

    return $sanitized;
}

В данном примере мы используем стандартную функцию sanitize_text_field() для очистки текстового поля.

Расширение: добавление дополнительных типов полей

Кроме текстовых полей, часто нужны чекбоксы, выпадающие списки и текстовые области. Приведём примеры реализации каждого типа.

Чекбокс

function wpdesk_checkbox_field_render() {
    $options = get_option('wpdesk_options');
    ?>
    <input type='checkbox' name='wpdesk_options[wpdesk_checkbox_field]' value='1' <?php checked(1, isset($options['wpdesk_checkbox_field']) ? $options['wpdesk_checkbox_field'] : 0); ?> />
    <?php
}

Выпадающий список

function wpdesk_select_field_render() {
    $options = get_option('wpdesk_options');
    $choices = array(
        'option1' => 'Опция 1',
        'option2' => 'Опция 2',
        'option3' => 'Опция 3',
    );
    ?>
    <select name='wpdesk_options[wpdesk_select_field]'>
        <?php foreach ($choices as $value => $label) : ?>
            <option value='<?php echo esc_attr($value); ?>' <?php selected($value, isset($options['wpdesk_select_field']) ? $options['wpdesk_select_field'] : ''); ?>><?php echo esc_html($label); ?></option>
        <?php endforeach; ?>
    </select>
    <?php
}

Текстовая область

function wpdesk_textarea_field_render() {
    $options = get_option('wpdesk_options');
    ?>
    <textarea name='wpdesk_options[wpdesk_textarea_field]' rows='5' cols='50'><?php echo isset($options['wpdesk_textarea_field']) ? esc_textarea($options['wpdesk_textarea_field']) : ''; ?></textarea>
    <?php
}

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

Полезные плагины для работы с настройками

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

  • CMB2 — мощный фреймворк для создания мета-боксов и страниц настроек.
  • Redux Framework — удобный фреймворк для создания панелей опций.
  • Options Framework — простой способ добавить страницу настроек с набором стандартных полей.

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

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

1. Всегда используйте функции очистки и валидации данных — это обезопасит сайт от вредоносных данных.

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

3. Используйте переводы и локализацию, чтобы ваш плагин был удобен для пользователей из разных стран.

4. Тестируйте отображение настроек на разных версиях WordPress и с разными темами, чтобы избежать конфликтов.

Как создать динамическую пагинацию в WordPress с поддержкой AJAX
13.02.2026
Автоподстановка данных в формах WordPress: практическое руководство с примерами
11.04.2026
Как отключить Emoji в WordPress для ускорения сайта
05.02.2026
Как создать автоматический импорт продуктов из Excel в WooCommerce
19.12.2025
WooCommerce: автоматическое изменение цен и скидок при импорте продуктов
17.05.2026

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