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

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

Что такое настройки в WordPress и зачем они нужны

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

Добавление собственных настроек позволяет:

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

Рассмотрим процесс на примере создания страницы настроек с несколькими опциями.

Регистрация страницы настроек в админке WordPress

Для начала нужно создать свою страницу в меню админ-панели. Это делается с помощью функции add_menu_page или add_submenu_page. Например, добавим страницу с названием «WPDesk Настройки» в главное меню:

add_action('admin_menu', 'wpdesk_add_admin_menu');
function wpdesk_add_admin_menu() {
    add_menu_page(
        'WPDesk Настройки',
        'WPDesk Настройки',
        'manage_options',
        'wpdesk-settings',
        'wpdesk_settings_page_html',
        'dashicons-admin-generic',
        80
    );
}

Здесь:

  • manage_options — право доступа для просмотра страницы (обычно администратор);
  • wpdesk-settings — уникальный идентификатор страницы;
  • wpdesk_settings_page_html — функция, которая выведет HTML содержимое страницы.

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

Далее необходимо зарегистрировать свои опции и создать поля для ввода значений. Для этого используется register_setting и add_settings_section с add_settings_field.

Пример регистрации настроек:

add_action('admin_init', 'wpdesk_settings_init');
function wpdesk_settings_init() {
    register_setting('wpdesk_settings_group', 'wpdesk_options');

    add_settings_section(
        'wpdesk_section_main',
        'Основные настройки',
        'wpdesk_section_main_cb',
        'wpdesk-settings'
    );

    add_settings_field(
        'wpdesk_field_text',
        'Текстовое поле',
        'wpdesk_field_text_cb',
        'wpdesk-settings',
        'wpdesk_section_main'
    );

    add_settings_field(
        'wpdesk_field_checkbox',
        'Чекбокс включения',
        'wpdesk_field_checkbox_cb',
        'wpdesk-settings',
        'wpdesk_section_main'
    );
}

Функция register_setting связывает группу настроек с опциями, которые будут сохранены в базе. В данном случае вся конфигурация хранится в одном массиве wpdesk_options.

Функции колбэки для описания секции и полей:

function wpdesk_section_main_cb() {
    echo '<p>Здесь можно настроить основные параметры плагина.</p>';
}

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

function wpdesk_field_checkbox_cb() {
    $options = get_option('wpdesk_options');
    $checked = isset($options['checkbox']) && $options['checkbox'] ? 'checked' : '';
    echo '<input type="checkbox" name="wpdesk_options[checkbox]" ' . $checked . ' />';
}

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

Теперь нужно вывести форму с полями в нашей функции wpdesk_settings_page_html:

function wpdesk_settings_page_html() {
    if (!current_user_can('manage_options')) {
        return;
    }

    if (isset($_GET['settings-updated'])) {
        add_settings_error('wpdesk_messages', 'wpdesk_message', 'Настройки сохранены', 'updated');
    }

    settings_errors('wpdesk_messages');

    echo '<div class="wrap">';
    echo '<h1>' . esc_html(get_admin_page_title()) . '</h1>';
    echo '<form action="options.php" method="post">';

    settings_fields('wpdesk_settings_group');
    do_settings_sections('wpdesk-settings');
    submit_button('Сохранить настройки');

    echo '</form></div>';
}

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

Обработка и использование сохранённых настроек

После сохранения настройки хранятся в базе данных в опции wpdesk_options в формате массива. Для использования настроек в коде вашего плагина или темы достаточно вызвать:

$options = get_option('wpdesk_options');
$text = isset($options['text']) ? $options['text'] : '';
$checkbox_enabled = !empty($options['checkbox']);

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

Дополнительные советы по безопасности и удобству

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

register_setting('wpdesk_settings_group', 'wpdesk_options', 'wpdesk_sanitize_options');

function wpdesk_sanitize_options($input) {
    $output = [];
    if (isset($input['text'])) {
        $output['text'] = sanitize_text_field($input['text']);
    }
    $output['checkbox'] = !empty($input['checkbox']) ? 1 : 0;
    return $output;
}

Это предотвратит сохранение нежелательных данных и повысит безопасность.

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

Если не хочется писать настройки вручную, можно использовать плагины, которые упрощают процесс:

  • Advanced Custom Fields (ACF) — позволяет создавать поля и группы полей, включая интерфейс для админа.
  • Carbon Fields — PHP библиотека для создания пользовательских полей и опций с удобным API.
  • Settings Pages — плагин для добавления страниц настроек без кода.

Но для максимальной гибкости и минимизации зависимостей лучше освоить собственный код, как показано выше.

Итог

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

Как добавить настройки пользователя в админ-панель WordPress
18.03.2026
WooCommerce: автоматическое изменение цен и скидок при импорте продуктов
10.05.2026
WooCommerce: как реализовать авторизацию пользователя через REST API
30.04.2026
Как добавить поддержку WebP в WordPress без плагинов
13.01.2026
WooCommerce: устранение ошибки «Невозможно создать вариант товара» при добавлении вариаций
21.05.2026

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