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

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

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

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

  • Изменять параметры работы плагина с панели администрирования
  • Обеспечить сохранность данных через стандартный API WordPress
  • Упростить поддержку и развитие плагина

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

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

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

add_action('admin_menu', 'cyrtolat_add_settings_page');
function cyrtolat_add_settings_page() {
    add_options_page(
        'Настройки плагина Cyrtolat',
        'Cyrtolat Settings',
        'manage_options',
        'cyrtolat-settings',
        'cyrtolat_render_settings_page'
    );
}

add_action('admin_init', 'cyrtolat_register_settings');
function cyrtolat_register_settings() {
    register_setting('cyrtolat_options_group', 'cyrtolat_options', 'cyrtolat_options_validate');

    add_settings_section('cyrtolat_main_section', 'Основные настройки', 'cyrtolat_section_text', 'cyrtolat-settings');

    add_settings_field('cyrtolat_text_string', 'Текстовая строка', 'cyrtolat_setting_string', 'cyrtolat-settings', 'cyrtolat_main_section');
}

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

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

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

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

function cyrtolat_setting_string() {
    $options = get_option('cyrtolat_options');
    $value = isset($options['text_string']) ? esc_attr($options['text_string']) : '';
    echo "<input id='cyrtolat_text_string' name='cyrtolat_options[text_string]' type='text' value='$value' />";
}

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

Таким образом мы создаём страницу с формой, где WordPress сам заботится о безопасности и сохранении данных.

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

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

function cyrtolat_options_validate($input) {
    $new_input = array();

    if (isset($input['text_string'])) {
        $new_input['text_string'] = sanitize_text_field($input['text_string']);
    }

    return $new_input;
}

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

Пример добавления чекбокса и выпадающего списка

Чтобы расширить настройки, добавим поле чекбокса и выпадающего списка. Для этого в функции регистрации добавим новые поля:

add_settings_field('cyrtolat_checkbox', 'Включить функцию', 'cyrtolat_setting_checkbox', 'cyrtolat-settings', 'cyrtolat_main_section');
add_settings_field('cyrtolat_select', 'Выберите вариант', 'cyrtolat_setting_select', 'cyrtolat-settings', 'cyrtolat_main_section');

function cyrtolat_setting_checkbox() {
    $options = get_option('cyrtolat_options');
    $checked = isset($options['checkbox']) && $options['checkbox'] ? 'checked' : '';
    echo "<input type='checkbox' id='cyrtolat_checkbox' name='cyrtolat_options[checkbox]' value='1' $checked />";
}

function cyrtolat_setting_select() {
    $options = get_option('cyrtolat_options');
    $selected = isset($options['select']) ? $options['select'] : '';
    $items = array('option1' => 'Вариант 1', 'option2' => 'Вариант 2', 'option3' => 'Вариант 3');
    echo "<select id='cyrtolat_select' name='cyrtolat_options[select]'>";
    foreach ($items as $key => $label) {
        $sel = selected($selected, $key, false);
        echo "<option value='$key' $sel>$label</option>";
    }
    echo "</select>";
}

Не забудьте расширить функцию валидации так, чтобы она корректно обрабатывала новые поля:

if (isset($input['checkbox'])) {
    $new_input['checkbox'] = $input['checkbox'] ? 1 : 0;
} else {
    $new_input['checkbox'] = 0;
}

if (isset($input['select']) && in_array($input['select'], array('option1','option2','option3'))) {
    $new_input['select'] = $input['select'];
}

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

Для вдохновения можно посмотреть как сделали настройки известные плагины:

  • Contact Form 7 — содержит несколько страниц с разными опциями для форм
  • WooCommerce — огромный набор настроек для магазина
  • Akismet — простая страница с ключом API и дополнительными опциями

Обратите внимание, что все они используют стандартные API WordPress, что повышает совместимость и удобство.

Безопасность и лучшие практики при создании настроек

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

  • Используйте register_setting с функцией валидации для очистки данных
  • Выводите данные с помощью функций esc_attr, esc_html для предотвращения XSS
  • Проверяйте права пользователя с помощью current_user_can('manage_options')
  • Используйте nonce в формах, WordPress делает это за вас через settings_fields

При соблюдении этих правил ваш плагин будет устойчив к распространённым атакам и ошибкам.

Заключение

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать хуки WordPress для эффективного контроля записей
06.12.2025
Как добавить AJAX в формы WordPress без плагинов: практическое руководство
25.11.2025
Как избежать проблем с оформлением перевода в WordPress: практические советы и примеры
10.12.2025
Как избежать проблем с кэшированием в WordPress: практическое руководство
02.02.2026
WooCommerce: как автоматически исключить из каталога товары без остатка на складе
28.04.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙