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

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

Почему стоит создавать свои настройки в админке WordPress

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

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

Как добавить страницу настроек в меню админки WordPress

Для начала создадим страницу в меню админки. Используем хук admin_menu и функцию add_options_page для добавления пункта меню в раздел «Настройки».

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

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

Регистрация настроек и создание полей с помощью Settings API

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

add_action('admin_init', 'wpreg_register_settings');
function wpreg_register_settings() {
    register_setting('wpreg_options_group', 'wpreg_options', 'wpreg_options_validate');

    add_settings_section(
        'wpreg_main_section',
        'Основные настройки WPReg',
        'wpreg_section_text',
        'wpreg-settings'
    );

    add_settings_field(
        'wpreg_text_string',
        'Текстовое поле',
        'wpreg_setting_string',
        'wpreg-settings',
        'wpreg_main_section'
    );

    add_settings_field(
        'wpreg_checkbox',
        'Флажок включения',
        'wpreg_setting_checkbox',
        'wpreg-settings',
        'wpreg_main_section'
    );
}

Функция вывода описания секции:

function wpreg_section_text() {
    echo '<p>Настройки для плагина WPReg.</p>';
}

Функции вывода полей:

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

function wpreg_setting_checkbox() {
    $options = get_option('wpreg_options');
    $checked = isset($options['checkbox']) && $options['checkbox'] ? 'checked' : '';
    echo "<input type='checkbox' name='wpreg_options[checkbox]' value='1' $checked />";
}

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

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

function wpreg_options_validate($input) {
    $output = array();

    if (isset($input['text_string'])) {
        $output['text_string'] = sanitize_text_field($input['text_string']);
    }

    $output['checkbox'] = !empty($input['checkbox']) ? 1 : 0;
    return $output;
}

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

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

function wpreg_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки WPReg</h1>
        <form action="options.php" method="post">
            <?php
            settings_fields('wpreg_options_group');
            do_settings_sections('wpreg-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

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

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

$options = get_option('wpreg_options');
if (!empty($options['checkbox'])) {
    echo '<p>Флажок включён</p>';
}
if (!empty($options['text_string'])) {
    echo '<p>Текст из настроек: ' . esc_html($options['text_string']) . '</p>';
}

Дополнительные плагины для расширения функционала настроек

Если вы хотите упростить создание настроек, можно использовать готовые решения из каталога плагинов WordPress или продукты от WPSHOP. Например:

  • Clearfy Pro — для оптимизации и управления настройками сайта;
  • Expert Review — добавить функционал отзывов с настройками;
  • My Popup — создание и настройка всплывающих окон с гибкими опциями.

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

Резюме по созданию собственных настроек

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

Приведённые примеры кода помогут быстро начать работу и адаптировать решение под ваши задачи. А использование готовых плагинов из WPSHOP позволит значительно расширить функциональность вашего сайта без лишних затрат времени.

Как использовать хуки в WordPress для решения конкретных задач
09.01.2026
Как создать уникальный Meta Box в WordPress с примером кода
22.12.2025
Как защитить WordPress от bruteforce атак
19.01.2026
Как отключить и удалить Gutenberg в WordPress без оставшегося кода
21.02.2026
Как исключить товары WooCommerce по атрибуту из корзины и оформления заказа
03.05.2026