Если вы разрабатываете собственный плагин для WordPress, рано или поздно вам понадобится добавить страницу с настройками, чтобы пользователи могли управлять функционалом вашего плагина через админ-панель. В этой статье мы подробно разберём, как создать страницу настроек плагина в WordPress с использованием стандартных API и лучших практик.
Почему важно создавать настройки плагина
Настраиваемость — один из ключевых факторов успеха плагина. Без удобной панели настроек пользователь вынужден будет редактировать код или базы данных вручную, что неудобно и небезопасно. Хорошо спроектированная страница настроек повышает удобство, расширяет возможности плагина и облегчает поддержку.
Кроме того, WordPress предоставляет удобные функции и хуки для создания таких страниц, что позволяет сделать это быстро и правильно, не прибегая к сторонним решениям.
Создание страницы настроек: базовые шаги
Для примера создадим плагин с названием wpdevelop_sample_plugin и добавим ему страницу настроек с одним текстовым полем.
Регистрация страницы настроек
Первый шаг — зарегистировать страницу настроек в меню админки. Для этого используем хук admin_menu и функцию add_options_page():
add_action('admin_menu', 'wpdevelop_add_plugin_settings_page');
function wpdevelop_add_plugin_settings_page() {
add_options_page(
'Настройки плагина WPDevelop', // Заголовок страницы
'WPDevelop Настройки', // Текст меню
'manage_options', // Возможности
'wpdevelop-sample-settings', // Слаг страницы
'wpdevelop_render_settings_page'// Функция вывода
);
}Здесь мы создали пункт меню внутри раздела Настройки WordPress.
Вывод страницы настроек
Теперь создадим функцию wpdevelop_render_settings_page(), которая будет выводить HTML формы настроек. Важно использовать стандартный API настроек WordPress — settings_fields(), do_settings_sections() и submit_button():
function wpdevelop_render_settings_page() {
?>
<div class="wrap">
<h1>Настройки плагина WPDevelop</h1>
<form action="options.php" method="post">
<?php
settings_fields('wpdevelop_options_group');
do_settings_sections('wpdevelop-sample-settings');
submit_button();
?>
</form>
</div>
<?php
}Это стандартный каркас, который подключает наши настройки и безопасно отправляет данные в WordPress.
Регистрация настроек и полей
Чтобы WordPress знал, какие настройки нужно сохранять, нужно зарегистрировать опции и описать поля формы.
Регистрация опции
Сделаем это в хуке admin_init:
add_action('admin_init', 'wpdevelop_register_settings');
function wpdevelop_register_settings() {
register_setting('wpdevelop_options_group', 'wpdevelop_sample_text');
add_settings_section(
'wpdevelop_main_section',
'Основные настройки',
'wpdevelop_section_callback',
'wpdevelop-sample-settings'
);
add_settings_field(
'wpdevelop_sample_text',
'Введите текст',
'wpdevelop_sample_text_callback',
'wpdevelop-sample-settings',
'wpdevelop_main_section'
);
}
function wpdevelop_section_callback() {
echo '<p>Настройте параметры плагина WPDevelop ниже.</p>';
}
function wpdevelop_sample_text_callback() {
$value = get_option('wpdevelop_sample_text', '');
echo '<input type="text" name="wpdevelop_sample_text" value="' . esc_attr($value) . '" class="regular-text" />';
}Здесь мы создали одну опцию wpdevelop_sample_text и поле для ввода текста. Вы можете добавлять больше секций и полей по аналогии.
Валидация и очистка данных
Очень важно при сохранении данных проверять их на корректность и безопасность. Для этого можно передать третий параметр в register_setting() — функцию обратного вызова для валидации.
function wpdevelop_validate_options($input) {
$output = sanitize_text_field($input);
if (strlen($output) > 50) {
add_settings_error('wpdevelop_sample_text', 'error', 'Текст не должен превышать 50 символов.');
return get_option('wpdevelop_sample_text');
}
return $output;
}
// Вызов регистрации с валидацией
register_setting('wpdevelop_options_group', 'wpdevelop_sample_text', 'wpdevelop_validate_options');Так вы защитите данные и уведомите пользователя об ошибках.
Использование сохранённых настроек в плагине
Чтобы применять настройки, достаточно получить значение опции где угодно в коде плагина через get_option('wpdevelop_sample_text'). Например:
function wpdevelop_print_custom_message() {
$message = get_option('wpdevelop_sample_text', 'Привет от WPDevelop!');
echo '<p>' . esc_html($message) . '</p>';
}
add_action('wp_footer', 'wpdevelop_print_custom_message');Этот код выведет текст из настроек плагина в подвале сайта.
Рекомендации и полезные плагины для работы с настройками
Если вы хотите упростить создание сложных страниц настроек, рассмотрите использование популярных библиотек и плагинов:
- CMB2 — мощная библиотека для создания метабоксов и форм настроек с минимальным кодом.
- Redux Framework — фреймворк с большим набором готовых элементов для настройки.
- OptionTree — удобный UI для создания пользовательских настроек.
Однако для простых плагинов стандартные API WordPress — лучший выбор, так как они не добавляют лишних зависимостей и интегрируются с ядром.
Заключение
Создание страницы настроек плагина в WordPress — задача, которую можно выполнить, следуя стандартным методам и API. Используйте add_options_page() для создания меню, register_setting() и связанные функции для регистрации настроек и полей, а также не забывайте про валидацию данных. Это обеспечит вашему плагину удобство и безопасность.