Создание собственного плагина с пользовательской страницей настроек — одна из самых востребованных задач среди разработчиков WordPress. Такой плагин позволяет не только расширять функциональность сайта, но и дает удобный интерфейс для управления его параметрами без необходимости править код вручную.
Почему важно создавать плагин с настройками
Пользователи сайта и администраторы ценят плагины, которые можно легко настроить через административную панель. Это снижает порог входа, расширяет аудиторию и повышает удобство использования. Кроме того, правильное создание страницы настроек с использованием стандартных API WordPress гарантирует безопасность и совместимость с будущими версиями CMS.
В этой статье мы разберем, как создать плагин с настройками с нуля. Вы увидите, как подключить меню в админ-панели, зарегистрировать настройки, вывести поля и сохранять данные корректно.
Создаем структуру плагина и подключаем меню
Для начала создадим папку wpplugins-settings в директории wp-content/plugins. В ней создадим файл wpplugins-settings.php — основной файл плагина.
<?php
/**
* Plugin Name: WPPlugins Настройки
* Description: Пример плагина с настройками в админке.
* Version: 1.0
* Author: wpplugins.ru
*/
// Добавляем меню настроек
add_action('admin_menu', 'wpplugins_add_admin_menu');
function wpplugins_add_admin_menu() {
add_options_page(
'Настройки WPPlugins',
'WPPlugins Настройки',
'manage_options',
'wpplugins-settings',
'wpplugins_settings_page'
);
}
Здесь мы используем функцию add_options_page, чтобы добавить пункт меню в раздел «Настройки» WordPress. Функция wpplugins_settings_page будет выводить HTML интерфейс страницы.
Регистрация и обработка настроек с Settings API
Для корректного сохранения и загрузки данных используем WordPress Settings API. Добавим регистрацию настроек в хук admin_init:
add_action('admin_init', 'wpplugins_settings_init');
function wpplugins_settings_init() {
register_setting('wpplugins_settings_group', 'wpplugins_settings');
add_settings_section(
'wpplugins_section_main',
'Основные настройки',
'wpplugins_section_main_cb',
'wpplugins-settings'
);
add_settings_field(
'wpplugins_field_text',
'Текстовое поле',
'wpplugins_field_text_cb',
'wpplugins-settings',
'wpplugins_section_main'
);
}
function wpplugins_section_main_cb() {
echo '<p>Настройте параметры плагина ниже.</p>';
}
function wpplugins_field_text_cb() {
$options = get_option('wpplugins_settings');
$value = isset($options['text_field']) ? esc_attr($options['text_field']) : '';
echo "<input type='text' name='wpplugins_settings[text_field]' value='{$value}' />";
}
Здесь мы создаем группу настроек wpplugins_settings_group и регистрируем одну настройку под ключом wpplugins_settings. В секции Основные настройки добавлено одно текстовое поле.
Вывод страницы настроек и сохранение данных
Реализуем функцию, которая выводит HTML формы для настроек с кнопкой сохранения:
function wpplugins_settings_page() {
if (!current_user_can('manage_options')) {
return;
}
// Выводим сообщения об успешном сохранении
if (isset($_GET['settings-updated'])) {
add_settings_error('wpplugins_messages', 'wpplugins_message', 'Настройки сохранены', 'updated');
}
settings_errors('wpplugins_messages');
?>
<div class="wrap">
<h1>Настройки WPPlugins</h1>
<form action="options.php" method="post">
<?php
settings_fields('wpplugins_settings_group');
do_settings_sections('wpplugins-settings');
submit_button('Сохранить настройки');
?>
</form>
</div>
<?php
}
Функция settings_fields добавляет необходимые поля безопасности, а do_settings_sections выводит зарегистрированные секции и поля.
Расширение плагина: добавляем чекбокс и выпадающий список
Чтобы сделать плагин более полезным, добавим два новых поля — чекбокс и селект с выбором:
add_settings_field(
'wpplugins_field_checkbox',
'Включить функцию',
'wpplugins_field_checkbox_cb',
'wpplugins-settings',
'wpplugins_section_main'
);
add_settings_field(
'wpplugins_field_select',
'Выберите опцию',
'wpplugins_field_select_cb',
'wpplugins-settings',
'wpplugins_section_main'
);
function wpplugins_field_checkbox_cb() {
$options = get_option('wpplugins_settings');
$checked = !empty($options['checkbox_field']) ? 'checked' : '';
echo "<input type='checkbox' name='wpplugins_settings[checkbox_field]' value='1' {$checked} />";
}
function wpplugins_field_select_cb() {
$options = get_option('wpplugins_settings');
$selected = isset($options['select_field']) ? $options['select_field'] : '';
$choices = [
'option1' => 'Опция 1',
'option2' => 'Опция 2',
'option3' => 'Опция 3',
];
echo "<select name='wpplugins_settings[select_field]'>";
foreach ($choices as $key => $label) {
$sel = selected($selected, $key, false);
echo "<option value='{$key}' {$sel}>{$label}</option>";
}
echo "</select>";
}
Такие поля расширяют возможности настройки плагина и делают его более гибким.
Пример использования настроек в коде плагина
Для демонстрации, как использовать сохраненные настройки, добавим фильтр, который в зависимости от параметров будет менять некоторый вывод.
add_filter('the_content', 'wpplugins_modify_content');
function wpplugins_modify_content($content) {
$options = get_option('wpplugins_settings');
if (!empty($options['checkbox_field'])) {
$content .= '<p><em>Функция включена!</em></p>';
}
if (!empty($options['text_field'])) {
$content .= '<p>Текст из настроек: ' . esc_html($options['text_field']) . '</p>';
}
return $content;
}
Этот код добавляет к содержимому поста дополнительный текст и сообщение, если включен чекбокс. Такой подход позволяет легко расширять функциональность в зависимости от параметров.
Рекомендации по безопасности и международной поддержке
При создании плагина с настройками важно обеспечить безопасность данных. Всегда используйте функции esc_attr, esc_html и проверяйте права пользователя через current_user_can. Для перевода плагина используйте функции __() и _e() с текстовым доменом, например, _e('Настройки WPPlugins', 'wpplugins').
Также не забудьте обрабатывать вводимые данные, если планируете использовать их не только для отображения, но и для выполнения логики.
Заключение
Создание собственного плагина с настройками — несложная задача, если использовать стандартные API WordPress. Это дает гарантию стабильности, безопасности и удобства для пользователей. В этом примере мы рассмотрели базовые шаги: добавление меню, регистрацию настроек, вывод формы и использование параметров в коде. На основе этой базы можно создавать сложные и мощные плагины под любые задачи.
Если хотите углубиться, рекомендую изучить официальную документацию по Settings API и экспериментировать с различными типами полей и секций.