Если вы разрабатываете плагин для WordPress, крайне важно предоставить пользователю удобный интерфейс для настройки его параметров. В этой статье мы подробно рассмотрим, как создать собственный раздел настроек плагина в админ-панели WordPress, используя стандартные API и лучшие практики разработки.
Зачем создавать собственный раздел настроек плагина в WordPress
Плагин без настроек — это редко удобное решение. Пользователю зачастую нужно менять параметры, включать или отключать функции, вводить ключи API или настраивать внешний вид. Чтобы избежать хаоса и обеспечить дружелюбный интерфейс, создают отдельный раздел настроек в меню админки.
Кроме того, использование стандартного Settings API WordPress гарантирует совместимость с будущими обновлениями и правильное сохранение настроек.
Создание страницы настроек плагина: добавление меню и подменю
Первый шаг — добавить пункт меню в админ-панель. Для этого используется хук admin_menu и функция add_menu_page или add_options_page. Рассмотрим пример создания страницы настроек с помощью add_menu_page:
add_action('admin_menu', 'wpcompany_add_plugin_menu');
function wpcompany_add_plugin_menu() {
add_menu_page(
'Настройки моего плагина', // Заголовок страницы
'Мой плагин', // Текст меню
'manage_options', // Права доступа
'wpcompany-plugin-settings', // Уникальный слаг
'wpcompany_render_settings_page', // Функция вывода содержимого
'dashicons-admin-generic', // Иконка меню
81 // Позиция меню
);
}В этом примере мы добавляем пункт меню с названием «Мой плагин» и иконкой, который открывает страницу, выводимую функцией wpcompany_render_settings_page.
Регистрация настроек и создание полей с помощью Settings API
Чтобы сохранить настройки, необходимо зарегистрировать их и определить поля формы. Сделаем это с помощью хуков admin_init и функций register_setting, add_settings_section, add_settings_field.
add_action('admin_init', 'wpcompany_settings_init');
function wpcompany_settings_init() {
// Регистрируем группу настроек
register_setting('wpcompany_settings_group', 'wpcompany_settings');
// Добавляем секцию
add_settings_section(
'wpcompany_section_main',
'Основные настройки',
'wpcompany_section_main_cb',
'wpcompany-plugin-settings'
);
// Добавляем поле
add_settings_field(
'wpcompany_field_api_key',
'API ключ',
'wpcompany_field_api_key_cb',
'wpcompany-plugin-settings',
'wpcompany_section_main'
);
}
// Колбек вывода описания секции
function wpcompany_section_main_cb() {
echo '<p>Настройте основные параметры плагина.</p>';
}
// Колбек вывода поля API ключа
function wpcompany_field_api_key_cb() {
$options = get_option('wpcompany_settings');
$api_key = isset($options['api_key']) ? esc_attr($options['api_key']) : '';
echo "<input type='text' name='wpcompany_settings[api_key]' value='{$api_key}' size='50' />";
}
Так мы зарегистрировали группу настроек wpcompany_settings_group, секцию с названием «Основные настройки» и поле для ввода API ключа.
Вывод формы настроек и сохранение данных
Осталось вывести форму на странице настроек и обеспечить сохранение введенных данных. Используем стандартные функции:
function wpcompany_render_settings_page() {
?>
<div class="wrap">
<h1>Настройки моего плагина</h1>
<form action="options.php" method="post">
<?php
settings_fields('wpcompany_settings_group');
do_settings_sections('wpcompany-plugin-settings');
submit_button('Сохранить настройки');
?>
</form>
</div>
<?php
}
Функция settings_fields выводит защитные поля, необходимые для сохранения через WordPress API. Функция do_settings_sections выводит все зарегистрированные секции и поля.
Добавление дополнительных типов полей и валидация данных
Для расширения функционала можно добавить поля разных типов: чекбоксы, выпадающие списки, текстовые области и т.д. Например, добавим чекбокс для включения отладочного режима:
add_settings_field(
'wpcompany_field_debug_mode',
'Включить отладочный режим',
'wpcompany_field_debug_mode_cb',
'wpcompany-plugin-settings',
'wpcompany_section_main'
);
function wpcompany_field_debug_mode_cb() {
$options = get_option('wpcompany_settings');
$checked = isset($options['debug_mode']) && $options['debug_mode'] ? 'checked' : '';
echo "<input type='checkbox' name='wpcompany_settings[debug_mode]' value='1' {$checked} />";
}
Для валидации и фильтрации данных можно использовать второй параметр функции register_setting, передавая функцию обратного вызова:
register_setting('wpcompany_settings_group', 'wpcompany_settings', 'wpcompany_validate_settings');
function wpcompany_validate_settings($input) {
$output = [];
if(isset($input['api_key'])) {
$output['api_key'] = sanitize_text_field($input['api_key']);
}
$output['debug_mode'] = !empty($input['debug_mode']) ? 1 : 0;
return $output;
}
Полезные плагины и инструменты для работы с настройками
Для быстрого создания настроек можно использовать готовые библиотеки и плагины. Например, Clearfy Pro содержит расширенные возможности управления настройками и оптимизации.
Также можно рассмотреть WPRemark для улучшения интерфейса и вывода настроек с дополнительной валидацией.
Заключение по созданию раздела настроек
Создание собственного раздела настроек в WordPress — это стандартный и необходимый этап для любого плагина. Использование Settings API обеспечивает безопасность, удобство и совместимость.
С помощью приведённого кода вы можете быстро начать создавать удобный интерфейс настроек, расширять его дополнительными полями и обеспечивать надежное сохранение данных.
Для более сложных решений рекомендуем изучить документацию WordPress по Settings API и посмотреть примеры популярных плагинов.