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

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

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

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

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

Создаем структуру плагина и подключаем меню

Для начала создадим папку wpplugins-settings в директории wp-content/plugins. В ней создадим файл wpplugins-settings.php — основной файл плагина.

<?php
/**
 * Plugin Name: WPPlugins Настройки
 * Description: Пример плагина с настройками в админке.
 * Version: 1.0
 * Author: wpplugins.ru
 */

// Добавляем меню настроек
add_action('admin_menu', 'wpplugins_add_admin_menu');
function wpplugins_add_admin_menu() {
    add_options_page(
        'Настройки WPPlugins',
        'WPPlugins Настройки',
        'manage_options',
        'wpplugins-settings',
        'wpplugins_settings_page'
    );
}

Здесь мы используем функцию add_options_page, чтобы добавить пункт меню в раздел «Настройки» WordPress. Функция wpplugins_settings_page будет выводить HTML интерфейс страницы.

Регистрация и обработка настроек с Settings API

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

add_action('admin_init', 'wpplugins_settings_init');
function wpplugins_settings_init() {
    register_setting('wpplugins_settings_group', 'wpplugins_settings');

    add_settings_section(
        'wpplugins_section_main',
        'Основные настройки',
        'wpplugins_section_main_cb',
        'wpplugins-settings'
    );

    add_settings_field(
        'wpplugins_field_text',
        'Текстовое поле',
        'wpplugins_field_text_cb',
        'wpplugins-settings',
        'wpplugins_section_main'
    );
}

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

function wpplugins_field_text_cb() {
    $options = get_option('wpplugins_settings');
    $value = isset($options['text_field']) ? esc_attr($options['text_field']) : '';
    echo "<input type='text' name='wpplugins_settings[text_field]' value='{$value}' />";
}

Здесь мы создаем группу настроек wpplugins_settings_group и регистрируем одну настройку под ключом wpplugins_settings. В секции Основные настройки добавлено одно текстовое поле.

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

Реализуем функцию, которая выводит HTML формы для настроек с кнопкой сохранения:

function wpplugins_settings_page() {
    if (!current_user_can('manage_options')) {
        return;
    }
    
    // Выводим сообщения об успешном сохранении
    if (isset($_GET['settings-updated'])) {
        add_settings_error('wpplugins_messages', 'wpplugins_message', 'Настройки сохранены', 'updated');
    }

    settings_errors('wpplugins_messages');
    ?>
    <div class="wrap">
        <h1>Настройки WPPlugins</h1>
        <form action="options.php" method="post">
            <?php
                settings_fields('wpplugins_settings_group');
                do_settings_sections('wpplugins-settings');
                submit_button('Сохранить настройки');
            ?>
        </form>
    </div>
    <?php
}

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

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

Чтобы сделать плагин более полезным, добавим два новых поля — чекбокс и селект с выбором:

add_settings_field(
    'wpplugins_field_checkbox',
    'Включить функцию',
    'wpplugins_field_checkbox_cb',
    'wpplugins-settings',
    'wpplugins_section_main'
);

add_settings_field(
    'wpplugins_field_select',
    'Выберите опцию',
    'wpplugins_field_select_cb',
    'wpplugins-settings',
    'wpplugins_section_main'
);

function wpplugins_field_checkbox_cb() {
    $options = get_option('wpplugins_settings');
    $checked = !empty($options['checkbox_field']) ? 'checked' : '';
    echo "<input type='checkbox' name='wpplugins_settings[checkbox_field]' value='1' {$checked} />";
}

function wpplugins_field_select_cb() {
    $options = get_option('wpplugins_settings');
    $selected = isset($options['select_field']) ? $options['select_field'] : '';
    $choices = [
        'option1' => 'Опция 1',
        'option2' => 'Опция 2',
        'option3' => 'Опция 3',
    ];

    echo "<select name='wpplugins_settings[select_field]'>";
    foreach ($choices as $key => $label) {
        $sel = selected($selected, $key, false);
        echo "<option value='{$key}' {$sel}>{$label}</option>";
    }
    echo "</select>";
}

Такие поля расширяют возможности настройки плагина и делают его более гибким.

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

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

add_filter('the_content', 'wpplugins_modify_content');
function wpplugins_modify_content($content) {
    $options = get_option('wpplugins_settings');

    if (!empty($options['checkbox_field'])) {
        $content .= '<p><em>Функция включена!</em></p>';
    }

    if (!empty($options['text_field'])) {
        $content .= '<p>Текст из настроек: ' . esc_html($options['text_field']) . '</p>';
    }

    return $content;
}

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

Рекомендации по безопасности и международной поддержке

При создании плагина с настройками важно обеспечить безопасность данных. Всегда используйте функции esc_attr, esc_html и проверяйте права пользователя через current_user_can. Для перевода плагина используйте функции __() и _e() с текстовым доменом, например, _e('Настройки WPPlugins', 'wpplugins').

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

Заключение

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

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

Как отключить автосохранение в WordPress: практическое руководство
18.02.2026
Как отключить AJAX в загрузке товаров WooCommerce для улучшения совместимости
10.02.2026
Как отключить отложенную загрузку картинок в WordPress
13.12.2025
Автоматическое удаление старого контента в WordPress
06.02.2026
Как использовать AJAX в собственных плагинах WordPress
26.02.2026