В этой статье мы подробно рассмотрим, как добавить собственные настройки в панель администратора 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
}