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

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

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

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

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

Основные шаги для создания страницы настроек в WordPress

Чтобы добавить страницу настроек, нам нужно:

  • Зарегистрировать страницу настроек с помощью add_menu_page или add_submenu_page;
  • Зарегистрировать настройки и поля с помощью API Settings API;
  • Создать форму для отображения настроек;
  • Обработать и сохранить данные при отправке формы.

Далее мы подробно разберём каждый из этих шагов и приведём примеры кода.

1. Добавление страницы меню в админке

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

function wplike_add_settings_page() {
    add_menu_page(
        'Настройки WPLike', // Заголовок страницы
        'WPLike Настройки', // Название в меню
        'manage_options',    // Права доступа
        'wplike-settings',   // Слаг страницы
        'wplike_render_settings_page', // Функция вывода
        'dashicons-admin-generic', // Иконка меню
        81 // Позиция меню
    );
}
add_action('admin_menu', 'wplike_add_settings_page');

Здесь мы добавляем главное меню с названием «WPLike Настройки».

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

WordPress предоставляет Settings API для удобной регистрации настроек и их полей. Это обеспечивает автоматическое сохранение и валидацию.

В нашем примере зарегистрируем одну опцию — текстовое поле «Текст приветствия».

function wplike_register_settings() {
    register_setting('wplike_options_group', 'wplike_greeting_text', [
        'sanitize_callback' => 'sanitize_text_field'
    ]);

    add_settings_section(
        'wplike_main_section',
        'Основные настройки',
        'wplike_main_section_cb',
        'wplike-settings'
    );

    add_settings_field(
        'wplike_greeting_text',
        'Текст приветствия',
        'wplike_greeting_text_cb',
        'wplike-settings',
        'wplike_main_section'
    );
}
add_action('admin_init', 'wplike_register_settings');

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

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

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

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

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

Дополнительные советы по созданию сложных настроек

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

  • Чекбокс: в коллбеке выводим <input type="checkbox" ...> и сохраняем как булево значение.
  • Селект: выводим <select> с опциями, сохраняем выбранное значение.
  • Загрузка файлов: сложнее, требует использования медиа-загрузчика WordPress, но тоже реализуемо.

Для реализации загрузчика можно подключить скрипты медиа-загрузчика через wp_enqueue_media() и добавить JavaScript для вызова окна выбора файла.

Пример чекбокса для включения функции

function wplike_feature_enabled_cb() {
    $value = get_option('wplike_feature_enabled', 0);
    echo '<input type="checkbox" name="wplike_feature_enabled" value="1"' . checked(1, $value, false) . ' /> Включить функцию';
}

// В регистрации полей:
add_settings_field(
    'wplike_feature_enabled',
    'Включить функцию',
    'wplike_feature_enabled_cb',
    'wplike-settings',
    'wplike_main_section'
);

register_setting('wplike_options_group', 'wplike_feature_enabled', [
    'sanitize_callback' => 'absint'
]);

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

Если вы хотите ускорить разработку или расширить функционал, обратите внимание на плагины и библиотеки, которые помогают создавать страницы настроек:

  • Kirki Customizer Framework — удобный фреймворк для создания настроек в кастомайзере.
  • Meta Box — для создания мета-полей и настроек с удобным интерфейсом.
  • Option Tree — популярный фреймворк для создания настроек в админке.

Использование этих инструментов позволит создавать более сложные и красивые формы без необходимости писать много кода вручную.

Отладка и безопасность при работе с настройками

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

Также не забывайте проверять права пользователя через current_user_can('manage_options') перед выводом или сохранением настроек, чтобы ограничить доступ только администраторам.

Пример проверки прав в функции вывода страницы

function wplike_render_settings_page() {
    if (!current_user_can('manage_options')) {
        wp_die('У вас нет прав для доступа к этой странице.');
    }
    ?>
    <div class="wrap">
        <h1>Настройки WPLike</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('wplike_options_group');
            do_settings_sections('wplike-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}
Как установить автоматические редиректы в WordPress по условиям
07.04.2026
Как добавить настройки в панель администратора WordPress
29.11.2025
Как создать собственный шорткод в WordPress
31.10.2025
WooCommerce: автоматическое удаление заказов при отказе оплаты
15.05.2026
Как установить автоматические резервные копии WordPress без плагинов
20.12.2025