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

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

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

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

Использование стандартного Settings API гарантирует, что настройки будут сохраняться безопасно, корректно отображаться и легко расширяться в будущем.

Создание базовой страницы настроек: добавляем меню и форму

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

add_action('admin_menu', 'wplist_add_plugin_settings_page');
function wplist_add_plugin_settings_page() {
    add_options_page(
        'Настройки моего плагина', // Заголовок страницы
        'Мой плагин',              // Текст меню
        'manage_options',          // Возможность доступа
        'wplist-plugin-settings',  // Уникальный slug страницы
        'wplist_render_settings_page' // Функция вывода
    );
}

Теперь нужно создать функцию wplist_render_settings_page(), которая выведет форму с настройками.

function wplist_render_settings_page() {
    // Проверяем права
    if (!current_user_can('manage_options')) {
        return;
    }
    // Выводим форму
    ?>
    <div class="wrap">
        <h1>Настройки моего плагина</h1>
        <form method="post" action="options.php">
            <?php
                settings_fields('wplist_plugin_options_group'); // Группа настроек
                do_settings_sections('wplist-plugin-settings'); // Страницы настроек
                submit_button();
            ?>
        </form>
    </div>
    <?php
}

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

Чтобы наши настройки сохранялись и отображались, необходимо зарегистрировать их через Settings API. Используем хук admin_init:

add_action('admin_init', 'wplist_register_settings');
function wplist_register_settings() {
    register_setting(
        'wplist_plugin_options_group', // Группа
        'wplist_plugin_options',       // Опции (массив)
        'wplist_sanitize_options'       // Функция очистки данных
    );

    add_settings_section(
        'wplist_main_section',          // ID
        'Основные настройки',           // Заголовок
        'wplist_main_section_callback', // Описание
        'wplist-plugin-settings'        // Страница
    );

    add_settings_field(
        'api_key',                      // ID поля
        'API ключ',                     // Заголовок поля
        'wplist_api_key_render',        // Функция вывода поля
        'wplist-plugin-settings',       // Страница
        'wplist_main_section'           // Секция
    );

    add_settings_field(
        'enable_feature',
        'Включить функцию',
        'wplist_enable_feature_render',
        'wplist-plugin-settings',
        'wplist_main_section'
    );
}

Описание секции настроек

Функция обратного вызова для описания раздела настроек:

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

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

Для каждого поля нужно вывести HTML-код формы:

function wplist_api_key_render() {
    $options = get_option('wplist_plugin_options');
    ?>
    <input type="text" name="wplist_plugin_options[api_key]" value="<?php echo isset($options['api_key']) ? esc_attr($options['api_key']) : ''; ?>" class="regular-text" />
    <p class="description">Введите API ключ для интеграции.</p>
    <?php
}

function wplist_enable_feature_render() {
    $options = get_option('wplist_plugin_options');
    ?>
    <input type="checkbox" name="wplist_plugin_options[enable_feature]" value="1" <?php checked(1, isset($options['enable_feature']) ? $options['enable_feature'] : 0); ?> /> Включено
    <?php
}

Очистка и валидация данных настроек

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

function wplist_sanitize_options($input) {
    $sanitized = array();

    if (isset($input['api_key'])) {
        $sanitized['api_key'] = sanitize_text_field($input['api_key']);
    }

    $sanitized['enable_feature'] = !empty($input['enable_feature']) ? 1 : 0;

    return $sanitized;
}

Пример интеграции с плагином Clearfy Pro для управления оптимизацией

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

Для этого используйте фильтры и хуки Clearfy Pro внутри вашей функции, реагируя на состояние флага enable_feature.

Резюме и рекомендации

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

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

Если нужна готовая платформа для создания и управления плагинами, рассмотрите продукты на WPSHOP.RU.

WooCommerce: как удалить отзывы только с определённых товаров
25.04.2026
Как удалить все старые метаданные в WordPress
09.02.2026
Как создать многоуровневое меню в WordPress: практическое руководство
02.12.2025
Как удалить проблемные виджеты в WordPress без ошибок и потери данных
23.03.2026
Как полностью удалить пользователя в WordPress вместе со всеми его данными
06.02.2026