Любой опытный разработчик WordPress рано или поздно сталкивается с необходимостью добавить собственные настройки в админ-панель сайта. Это позволяет сделать плагин или тему более гибкими и удобными для конечного пользователя. В этой статье мы подробно разберём, как добавить страницу с настройками, зарегистрировать опции и вывести поля ввода с помощью стандартных API WordPress.
Почему важно создавать собственные страницы настроек
Стандартная панель управления WordPress предоставляет множество инструментов, но в большинстве случаев разработчику нужно добавить уникальные параметры, которые не входят в базовый функционал. Например, настройки для интеграции с внешними сервисами, управления отображением элементов темы или плагина, а также прочее.
Добавление собственных настроек позволяет:
- Централизовать управление функционалом плагина или темы
- Облегчить администрирование для пользователей без навыков программирования
- Избежать правки исходного кода и сделать сайт более надёжным
Далее рассмотрим пошаговый процесс создания такой страницы.
Регистрация страницы настроек в админ-панели WordPress
Для начала необходимо зарегистрировать новую страницу в меню админ-панели. Для этого используется функция add_options_page(), которая добавляет пункт в раздел «Настройки».
Пример кода для регистрации страницы:
function wppremium_add_settings_page() {
add_options_page(
'Настройки WPPremium', // Заголовок страницы
'WPPremium', // Название меню
'manage_options', // Права доступа
'wppremium-settings', // Уникальный slug страницы
'wppremium_render_settings_page' // Функция вывода содержимого
);
}
add_action('admin_menu', 'wppremium_add_settings_page');Здесь мы создаём пункт меню с названием «WPPremium», доступный только администраторам (manage_options). Функция wppremium_render_settings_page будет отвечать за вывод формы настроек.
Регистрация и использование опций WordPress
WordPress предлагает API для хранения настроек через функции register_setting(), add_settings_section(), add_settings_field(). Это упрощает создание форм и обработку данных.
Пример регистрации опций:
function wppremium_register_settings() {
register_setting('wppremium_options_group', 'wppremium_options', 'wppremium_options_validate');
add_settings_section(
'wppremium_main_section',
'Основные настройки',
'wppremium_section_text',
'wppremium-settings'
);
add_settings_field(
'wppremium_text_string',
'Текстовая строка',
'wppremium_setting_string',
'wppremium-settings',
'wppremium_main_section'
);
}
add_action('admin_init', 'wppremium_register_settings');Здесь мы регистрируем группу опций wppremium_options, секцию и поле ввода. Функция wppremium_options_validate отвечает за валидацию данных, а wppremium_section_text — за описание секции.
Вывод описания секции
function wppremium_section_text() {
echo '<p>Здесь вы можете изменить основные параметры плагина WPPremium.</p>';
}Вывод поля ввода
function wppremium_setting_string() {
$options = get_option('wppremium_options');
echo "<input id='wppremium_text_string' name='wppremium_options[text_string]' size='40' type='text' value='" . esc_attr($options['text_string'] ?? '') . "' />";
}Вывод страницы настроек с формой
Функция, которая выводит страницу настроек, должна содержать HTML-форму с вызовами settings_fields() и do_settings_sections(). Эти функции обеспечивают правильную обработку данных WordPress.
function wppremium_render_settings_page() {
?>
<div class="wrap">
<h1>Настройки WPPremium</h1>
<form action="options.php" method="post">
<?php
settings_fields('wppremium_options_group');
do_settings_sections('wppremium-settings');
submit_button('Сохранить изменения');
?>
</form>
</div>
<?php
}Валидация введённых данных
Для безопасности и корректности работы рекомендуется валидировать и фильтровать данные перед сохранением. В нашем случае реализуем простую валидацию, которая удаляет лишние пробелы и защищает от вредоносного кода.
function wppremium_options_validate($input) {
$new_input = array();
if (isset($input['text_string'])) {
$new_input['text_string'] = sanitize_text_field(trim($input['text_string']));
}
return $new_input;
}Примеры полезных расширений
В зависимости от задач можно добавлять разные типы полей: чекбоксы, селекты, цветовые палитры, загрузку файлов и т.д. Для простоты рассмотрим добавление чекбокса.
add_settings_field(
'wppremium_checkbox',
'Включить функцию',
'wppremium_setting_checkbox',
'wppremium-settings',
'wppremium_main_section'
);
function wppremium_setting_checkbox() {
$options = get_option('wppremium_options');
$checked = isset($options['checkbox']) && $options['checkbox'] === '1' ? 'checked' : '';
echo "<input type='checkbox' id='wppremium_checkbox' name='wppremium_options[checkbox]' value='1' $checked />";
}Не забудьте добавить обработку валидации для чекбокса, чтобы сохранять только 0 или 1.
Рекомендации по безопасности и производительности
При работе с настройками важно учитывать возможности безопасного сохранения и предотвращения XSS-уязвимостей. Всегда используйте функции sanitize_* и esc_* для фильтрации входящих и выводимых данных.
Кроме того, не забывайте использовать префиксы в именах функций и опций, чтобы избежать конфликтов с другими плагинами или темами.
Заключение
Добавление собственных настроек в панель управления WordPress — это мощный инструмент для расширения функционала сайта. Используя стандартные API WordPress, вы получите надёжное и удобное решение, которое легко адаптируется под любые задачи.
Приведённые примеры кода можно использовать как основу для создания собственных страниц настроек в плагинах и темах. Экспериментируйте с типами полей и настройками, чтобы сделать ваш продукт максимально удобным для пользователей.