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

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

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

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

Если писать настройки "вручную" без использования API, можно столкнуться с проблемами безопасности, дублированием кода и усложнением поддержки.

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

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

Начнем с добавления пункта меню в админпанель. Для этого используем хук admin_menu и функцию add_menu_page. В нашем примере создадим меню «WPTO Настройки».

add_action('admin_menu', 'wpto_add_admin_menu');
function wpto_add_admin_menu() {
    add_menu_page(
        'WPTO Настройки', // Заголовок страницы
        'WPTO Настройки', // Название меню
        'manage_options', // Права доступа
        'wpto_settings', // slug страницы
        'wpto_settings_page', // callback функция для вывода
        'dashicons-admin-generic', // иконка меню
        80 // позиция
    );
}

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

Регистрация настроек и полей формы с Settings API

Для хранения настроек используем функцию register_setting, а для создания полей — add_settings_section и add_settings_field.

Добавим пример настройки — поле для ввода API ключа.

add_action('admin_init', 'wpto_settings_init');
function wpto_settings_init() {
    register_setting('wpto_settings_group', 'wpto_api_key', [
        'sanitize_callback' => 'sanitize_text_field'
    ]);

    add_settings_section(
        'wpto_section_main',
        'Основные настройки',
        'wpto_section_main_cb',
        'wpto_settings'
    );

    add_settings_field(
        'wpto_field_api_key',
        'API ключ',
        'wpto_field_api_key_cb',
        'wpto_settings',
        'wpto_section_main'
    );
}

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

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

Вывод формы и обработка сохранения данных

В функции вывода страницы настроек нужно отобразить форму с безопасным полем nonce и кнопкой сохранения:

function wpto_settings_page() {
    ?>
    <div class="wrap">
        <h1>WPTO Настройки</h1>
        <form action="options.php" method="post">
            <?php
            settings_fields('wpto_settings_group');
            do_settings_sections('wpto_settings');
            submit_button('Сохранить настройки');
            ?>
        </form>
    </div>
    <?php
}

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

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

После того как пользователь сохранит API ключ, можно использовать его в вашем плагине или теме, например, для подключения к внешнему сервису:

$api_key = get_option('wpto_api_key', '');
if (!empty($api_key)) {
    // пример вызова внешнего API
    $response = wp_remote_get('https://api.example.com/data?key=' . urlencode($api_key));
    if (is_wp_error($response)) {
        // обработка ошибки
    } else {
        $data = json_decode(wp_remote_retrieve_body($response), true);
        // работа с данными
    }
}

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

Помимо текстовых полей, можно добавлять чекбоксы, селекты, радио-кнопки. Например, добавим чекбокс «Включить режим отладки».

register_setting('wpto_settings_group', 'wpto_debug_mode', [
    'sanitize_callback' => 'wpto_sanitize_checkbox'
]);

add_settings_field(
    'wpto_field_debug_mode',
    'Режим отладки',
    'wpto_field_debug_mode_cb',
    'wpto_settings',
    'wpto_section_main'
);

function wpto_field_debug_mode_cb() {
    $value = get_option('wpto_debug_mode', 0);
    $checked = $value ? 'checked' : '';
    echo '<input type="checkbox" name="wpto_debug_mode" value="1" ' . $checked . ' /> Включить отладку';
}

function wpto_sanitize_checkbox($input) {
    return $input == 1 ? 1 : 0;
}

Советы по улучшению и расширению страницы настроек

1. Разделяйте настройки на несколько страниц или вкладок, если их много. Для этого используйте add_submenu_page или JavaScript.

2. Добавляйте подсказки и описания к полям, чтобы пользователь понимал их назначение.

3. Используйте кастомные CSS и JS для улучшения интерфейса, например, добавьте селекторы с автозаполнением.

4. Для сложных настроек можно использовать плагины, такие как Clearfy Pro, которые расширяют возможности управления настройками и оптимизации.

Заключение

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

Авторизация по телефону в WordPress: настройка и примеры
26.12.2025
Как использовать WPGPT для автоматического создания контента в WordPress
13.12.2025
Как удалить неиспользуемые таблицы из базы данных WordPress
08.12.2025
Как вернуть удалённое содержимое в WordPress
05.04.2026
Как установить и настроить php.ini для WordPress на VPS
22.03.2026