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

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

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

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

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

Создание страницы настроек: базовые шаги

Для примера создадим плагин с названием wpdevelop_sample_plugin и добавим ему страницу настроек с одним текстовым полем.

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

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

add_action('admin_menu', 'wpdevelop_add_plugin_settings_page');

function wpdevelop_add_plugin_settings_page() {
    add_options_page(
        'Настройки плагина WPDevelop', // Заголовок страницы
        'WPDevelop Настройки',           // Текст меню
        'manage_options',                // Возможности
        'wpdevelop-sample-settings',    // Слаг страницы
        'wpdevelop_render_settings_page'// Функция вывода
    );
}

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

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

Теперь создадим функцию wpdevelop_render_settings_page(), которая будет выводить HTML формы настроек. Важно использовать стандартный API настроек WordPress — settings_fields(), do_settings_sections() и submit_button():

function wpdevelop_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки плагина WPDevelop</h1>
        <form action="options.php" method="post">
            <?php
            settings_fields('wpdevelop_options_group');
            do_settings_sections('wpdevelop-sample-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

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

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

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

Регистрация опции

Сделаем это в хуке admin_init:

add_action('admin_init', 'wpdevelop_register_settings');

function wpdevelop_register_settings() {
    register_setting('wpdevelop_options_group', 'wpdevelop_sample_text');

    add_settings_section(
        'wpdevelop_main_section',
        'Основные настройки',
        'wpdevelop_section_callback',
        'wpdevelop-sample-settings'
    );

    add_settings_field(
        'wpdevelop_sample_text',
        'Введите текст',
        'wpdevelop_sample_text_callback',
        'wpdevelop-sample-settings',
        'wpdevelop_main_section'
    );
}

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

function wpdevelop_sample_text_callback() {
    $value = get_option('wpdevelop_sample_text', '');
    echo '<input type="text" name="wpdevelop_sample_text" value="' . esc_attr($value) . '" class="regular-text" />';
}

Здесь мы создали одну опцию wpdevelop_sample_text и поле для ввода текста. Вы можете добавлять больше секций и полей по аналогии.

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

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

function wpdevelop_validate_options($input) {
    $output = sanitize_text_field($input);
    if (strlen($output) > 50) {
        add_settings_error('wpdevelop_sample_text', 'error', 'Текст не должен превышать 50 символов.');
        return get_option('wpdevelop_sample_text');
    }
    return $output;
}

// Вызов регистрации с валидацией
register_setting('wpdevelop_options_group', 'wpdevelop_sample_text', 'wpdevelop_validate_options');

Так вы защитите данные и уведомите пользователя об ошибках.

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

Чтобы применять настройки, достаточно получить значение опции где угодно в коде плагина через get_option('wpdevelop_sample_text'). Например:

function wpdevelop_print_custom_message() {
    $message = get_option('wpdevelop_sample_text', 'Привет от WPDevelop!');
    echo '<p>' . esc_html($message) . '</p>';
}

add_action('wp_footer', 'wpdevelop_print_custom_message');

Этот код выведет текст из настроек плагина в подвале сайта.

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

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

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

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

Заключение

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

WooCommerce: установка и настройка подключения платежного шлюза Сбербанк
25.05.2026
Как создать автоматическое обновление пакета в WordPress плагинах
07.02.2026
Как создать автоматический импорт постов из RSS в WordPress
18.01.2026
WooCommerce: как автоматически удалять товары при пустой корзине
29.05.2026
Как создать автоматический импорт товаров в WooCommerce из JSON файла
23.12.2025