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

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

Зачем нужны настройки плагина в WordPress

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

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

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

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

function wpcommunity_add_plugin_page() {
    add_options_page(
        'Настройки WPCommunity', // Заголовок страницы
        'WPCommunity',            // Название меню
        'manage_options',         // Права доступа
        'wpcommunity_settings',   // slug страницы
        'wpcommunity_render_settings_page' // Колбэк для вывода
    );
}
add_action('admin_menu', 'wpcommunity_add_plugin_page');

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

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

Теперь зарегистрируем настройки и добавим поля с помощью API настроек WordPress. Для этого используем хук admin_init:

function wpcommunity_register_settings() {
    register_setting('wpcommunity_options_group', 'wpcommunity_option_name', 'sanitize_text_field');

    add_settings_section(
        'wpcommunity_setting_section',
        'Основные настройки',
        'wpcommunity_section_callback',
        'wpcommunity_settings'
    );

    add_settings_field(
        'wpcommunity_text_field',
        'Текстовое поле',
        'wpcommunity_text_field_callback',
        'wpcommunity_settings',
        'wpcommunity_setting_section'
    );
}
add_action('admin_init', 'wpcommunity_register_settings');

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

Колбэки для вывода секции и поля

function wpcommunity_section_callback() {
    echo '<p>Настройки плагина WPCommunity.</p>';
}

function wpcommunity_text_field_callback() {
    $value = get_option('wpcommunity_option_name', '');
    echo '<input type="text" id="wpcommunity_text_field" name="wpcommunity_option_name" value="' . esc_attr($value) . '" />';
}

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

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

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

function wpcommunity_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки плагина WPCommunity</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('wpcommunity_options_group');
            do_settings_sections('wpcommunity_settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Функция settings_fields выводит скрытые поля безопасности, do_settings_sections выводит зарегистрированные секции и поля, а submit_button создает кнопку отправки.

Санитизация и безопасность данных

При регистрации настроек мы указали функцию sanitize_text_field для очистки входящих данных. Вы можете использовать свои функции санитизации, если ожидаете другой формат данных.

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

Расширение: добавление чекбокса и селекта

Добавим два дополнительных поля: чекбокс и селект с вариантами.

add_settings_field(
    'wpcommunity_checkbox',
    'Включить функцию',
    'wpcommunity_checkbox_callback',
    'wpcommunity_settings',
    'wpcommunity_setting_section'
);

add_settings_field(
    'wpcommunity_select',
    'Выбор опции',
    'wpcommunity_select_callback',
    'wpcommunity_settings',
    'wpcommunity_setting_section'
);

function wpcommunity_checkbox_callback() {
    $option = get_option('wpcommunity_checkbox_option', '');
    $checked = checked(1, $option, false);
    echo '<input type="checkbox" id="wpcommunity_checkbox" name="wpcommunity_checkbox_option" value="1" ' . $checked . ' />';
}

function wpcommunity_select_callback() {
    $option = get_option('wpcommunity_select_option', 'option1');
    echo '<select id="wpcommunity_select" name="wpcommunity_select_option">';
    $options = ['option1' => 'Опция 1', 'option2' => 'Опция 2', 'option3' => 'Опция 3'];
    foreach ($options as $key => $label) {
        $selected = selected($option, $key, false);
        echo "<option value=\"$key\" $selected>$label</option>";
    }
    echo '</select>';
}

Не забудьте зарегистрировать эти опции с функцией санитизации:

register_setting('wpcommunity_options_group', 'wpcommunity_checkbox_option', 'wpcommunity_sanitize_checkbox');
register_setting('wpcommunity_options_group', 'wpcommunity_select_option', 'wpcommunity_sanitize_select');

function wpcommunity_sanitize_checkbox($input) {
    return $input == 1 ? 1 : 0;
}

function wpcommunity_sanitize_select($input) {
    $valid = ['option1', 'option2', 'option3'];
    return in_array($input, $valid) ? $input : 'option1';
}

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

После сохранения настроек вы можете получить их значения с помощью get_option в любом месте вашего плагина:

$text = get_option('wpcommunity_option_name', 'дефолт');
$enabled = get_option('wpcommunity_checkbox_option', 0);
$select = get_option('wpcommunity_select_option', 'option1');

Далее можно реализовать логику, которая зависит от этих параметров.

Заключение

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

Не забывайте про безопасность и проверку данных, а также про права доступа. В дальнейшем можно добавить поддержку кастомных типов полей, визуальных редакторов и других элементов.

Как запретить регистрацию по определённым email-доменам в WordPress
14.04.2026
Как создать автоматическую систему удаления нерабочих шорткодов в WordPress
08.03.2026
Как отключить Gutenberg и вернуть классический редактор в WordPress
06.02.2026
Как использовать фильтры для изменения цены в WooCommerce по условию
29.04.2026
Оптимизация REST API ответов в WordPress: практические решения и примеры
25.12.2025

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: