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

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

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

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

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

Это особенно актуально если вы создаёте плагин для клиентов или распространяете его публично.

Создание базового плагина WordPress с настройками

Шаг 1. Создаём структуру плагина

Для начала создадим папку wppuzzle-settings в директории wp-content/plugins и внутри неё файл wppuzzle-settings.php. В этот файл добавим шапку плагина:

<?php
/*
Plugin Name: WPpuzzle Настройки
Description: Пример плагина с пользовательской страницей настроек
Version: 1.0
Author: WPpuzzle
*/

Это минимальный набор, чтобы WordPress увидел плагин.

Шаг 2. Регистрируем страницу настроек в админке

Для добавления меню в админке используем хук admin_menu. Добавим функцию с префиксом wppuzzle_:

add_action('admin_menu', 'wppuzzle_add_admin_menu');
function wppuzzle_add_admin_menu() {
    add_options_page(
        'Настройки WPpuzzle',
        'WPpuzzle Настройки',
        'manage_options',
        'wppuzzle_settings',
        'wppuzzle_options_page'
    );
}

Здесь мы создаём страницу в меню "Настройки" с названием "WPpuzzle Настройки".

Шаг 3. Регистрируем настройки и поля

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

add_action('admin_init', 'wppuzzle_settings_init');
function wppuzzle_settings_init() {
    register_setting('wppuzzle_settings_group', 'wppuzzle_option_text');

    add_settings_section(
        'wppuzzle_section_main',
        'Основные настройки',
        'wppuzzle_section_callback',
        'wppuzzle_settings'
    );

    add_settings_field(
        'wppuzzle_field_text',
        'Текстовое поле',
        'wppuzzle_field_text_render',
        'wppuzzle_settings',
        'wppuzzle_section_main'
    );
}

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

function wppuzzle_field_text_render() {
    $value = get_option('wppuzzle_option_text', '');
    echo '<input type="text" name="wppuzzle_option_text" value="'.esc_attr($value).'"/>';
}

Мы создали одну настройку — текстовое поле, которое пользователь может заполнить.

Шаг 4. Выводим страницу настроек

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

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

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

Добавление нескольких типов полей и валидация данных

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

Пример: чекбокс и выпадающий список

add_action('admin_init', 'wppuzzle_settings_init');
function wppuzzle_settings_init() {
    register_setting('wppuzzle_settings_group', 'wppuzzle_option_text');
    register_setting('wppuzzle_settings_group', 'wppuzzle_option_checkbox');
    register_setting('wppuzzle_settings_group', 'wppuzzle_option_select');

    add_settings_section('wppuzzle_section_main', 'Основные настройки', 'wppuzzle_section_callback', 'wppuzzle_settings');

    add_settings_field('wppuzzle_field_text', 'Текстовое поле', 'wppuzzle_field_text_render', 'wppuzzle_settings', 'wppuzzle_section_main');
    add_settings_field('wppuzzle_field_checkbox', 'Включить опцию', 'wppuzzle_field_checkbox_render', 'wppuzzle_settings', 'wppuzzle_section_main');
    add_settings_field('wppuzzle_field_select', 'Выберите вариант', 'wppuzzle_field_select_render', 'wppuzzle_settings', 'wppuzzle_section_main');
}

function wppuzzle_field_checkbox_render() {
    $option = get_option('wppuzzle_option_checkbox');
    $checked = $option ? 'checked' : '';
    echo '<input type="checkbox" name="wppuzzle_option_checkbox" value="1" '.$checked.'/>';
}

function wppuzzle_field_select_render() {
    $option = get_option('wppuzzle_option_select');
    $options = ['one' => 'Вариант 1', 'two' => 'Вариант 2', 'three' => 'Вариант 3'];
    echo '<select name="wppuzzle_option_select">';
    foreach ($options as $key => $label) {
        $selected = ($option === $key) ? 'selected' : '';
        echo '<option value="'.esc_attr($key).'" '.$selected.'>'.esc_html($label).'</option>';
    }
    echo '</select>';
}

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

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

Для безопасности и корректной работы желательно валидировать данные при сохранении. Можно добавить функцию-валидатор при регистрации настроек:

register_setting('wppuzzle_settings_group', 'wppuzzle_option_text', 'wppuzzle_sanitize_text');

function wppuzzle_sanitize_text($input) {
    return sanitize_text_field($input);
}

Для чекбоксов можно проверить наличие значения и вернуть 0 или 1.

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

После того как пользователь сохранил настройки, их можно получить функцией get_option и использовать в логике плагина.

$text = get_option('wppuzzle_option_text', '');
$enabled = get_option('wppuzzle_option_checkbox', 0);

if ($enabled) {
    echo '<p>Опция включена, текст: '.esc_html($text).'</p>';
}

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

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

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

  • CMB2 — мощный фреймворк для создания мета-полей и страниц настроек.
  • Redux Framework — богатый функционал для создания панелей опций с множеством типов полей.
  • Settings API — собственный API WordPress, который мы применяли выше, простой и встроенный.

Они помогут ускорить разработку и добавить профессиональный вид.

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

Создание собственного плагина с настройками — задача вполне посильная для разработчика со средним уровнем навыков. Главное — понимать структуру и использовать встроенные API WordPress.

Ключевые шаги:

  1. Создать папку и главный файл плагина с шапкой.
  2. Добавить меню настроек через хук admin_menu.
  3. Зарегистрировать настройки и поля с помощью register_setting, add_settings_section и add_settings_field.
  4. Реализовать страницу настроек с формой и выводом полей.
  5. Обработать и валидировать вводимые данные.
  6. Использовать сохранённые параметры в логике плагина.

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

Оптимизация AJAX-запросов в WordPress: практические советы и примеры кода
13.11.2025
Автоподгрузка контента в WordPress без перезагрузки страницы
04.01.2026
Как создать собственный шорткод в WordPress
05.11.2025
Как создать плагин для WordPress с настройками
19.11.2025
Как создать свой виджет для WordPress: полное руководство
26.11.2025