Создание собственного плагина для WordPress — отличная возможность расширить функциональность сайта и сделать его уникальным. В этой статье мы подробно рассмотрим, как создать плагин с пользовательской страницей настроек в админке WordPress. Такой плагин позволит удобно управлять его параметрами через привычный интерфейс, не редактируя код.
Зачем создавать плагин с настройками для WordPress
Часто простой плагин без интерфейса ограничен в применении, особенно если нужно менять параметры работы без доступа к файлам. Добавление страницы настроек в админке позволяет:
- Управлять поведением плагина через удобный интерфейс.
- Избежать необходимости редактировать код при изменении параметров.
- Сделать плагин более гибким и универсальным.
- Предоставить возможности конечному пользователю без технических знаний.
Это особенно актуально если вы создаёте плагин для клиентов или распространяете его публично.
Создание базового плагина WordPress с настройками
Шаг 1. Создаём структуру плагина
Для начала создадим папку wppuzzle-settings в директории wp-content/plugins и внутри неё файл wppuzzle-settings.php. В этот файл добавим шапку плагина:
<?php
/*
Plugin Name: WPpuzzle Настройки
Description: Пример плагина с пользовательской страницей настроек
Version: 1.0
Author: WPpuzzle
*/
Это минимальный набор, чтобы WordPress увидел плагин.
Шаг 2. Регистрируем страницу настроек в админке
Для добавления меню в админке используем хук admin_menu. Добавим функцию с префиксом wppuzzle_:
add_action('admin_menu', 'wppuzzle_add_admin_menu');
function wppuzzle_add_admin_menu() {
add_options_page(
'Настройки WPpuzzle',
'WPpuzzle Настройки',
'manage_options',
'wppuzzle_settings',
'wppuzzle_options_page'
);
}
Здесь мы создаём страницу в меню "Настройки" с названием "WPpuzzle Настройки".
Шаг 3. Регистрируем настройки и поля
Чтобы сохранить данные, используем API настроек WordPress. В хук admin_init добавим регистрацию настроек и секций:
add_action('admin_init', 'wppuzzle_settings_init');
function wppuzzle_settings_init() {
register_setting('wppuzzle_settings_group', 'wppuzzle_option_text');
add_settings_section(
'wppuzzle_section_main',
'Основные настройки',
'wppuzzle_section_callback',
'wppuzzle_settings'
);
add_settings_field(
'wppuzzle_field_text',
'Текстовое поле',
'wppuzzle_field_text_render',
'wppuzzle_settings',
'wppuzzle_section_main'
);
}
function wppuzzle_section_callback() {
echo '<p>Настройте параметры плагина WPpuzzle здесь.</p>';
}
function wppuzzle_field_text_render() {
$value = get_option('wppuzzle_option_text', '');
echo '<input type="text" name="wppuzzle_option_text" value="'.esc_attr($value).'"/>';
}
Мы создали одну настройку — текстовое поле, которое пользователь может заполнить.
Шаг 4. Выводим страницу настроек
Теперь реализуем функцию wppuzzle_options_page, которая выведет форму на странице настроек:
function wppuzzle_options_page() {
?>
<div class="wrap">
<h1>Настройки плагина WPpuzzle</h1>
<form action="options.php" method="post">
<?php
settings_fields('wppuzzle_settings_group');
do_settings_sections('wppuzzle_settings');
submit_button();
?>
</form>
</div>
<?php
}
Функция settings_fields выводит необходимые скрытые поля безопасности, а do_settings_sections — наши зарегистрированные секции и поля.
Добавление нескольких типов полей и валидация данных
Обычно для настроек нужны разные типы полей: чекбоксы, селекты, textarea. Давайте добавим несколько примеров.
Пример: чекбокс и выпадающий список
add_action('admin_init', 'wppuzzle_settings_init');
function wppuzzle_settings_init() {
register_setting('wppuzzle_settings_group', 'wppuzzle_option_text');
register_setting('wppuzzle_settings_group', 'wppuzzle_option_checkbox');
register_setting('wppuzzle_settings_group', 'wppuzzle_option_select');
add_settings_section('wppuzzle_section_main', 'Основные настройки', 'wppuzzle_section_callback', 'wppuzzle_settings');
add_settings_field('wppuzzle_field_text', 'Текстовое поле', 'wppuzzle_field_text_render', 'wppuzzle_settings', 'wppuzzle_section_main');
add_settings_field('wppuzzle_field_checkbox', 'Включить опцию', 'wppuzzle_field_checkbox_render', 'wppuzzle_settings', 'wppuzzle_section_main');
add_settings_field('wppuzzle_field_select', 'Выберите вариант', 'wppuzzle_field_select_render', 'wppuzzle_settings', 'wppuzzle_section_main');
}
function wppuzzle_field_checkbox_render() {
$option = get_option('wppuzzle_option_checkbox');
$checked = $option ? 'checked' : '';
echo '<input type="checkbox" name="wppuzzle_option_checkbox" value="1" '.$checked.'/>';
}
function wppuzzle_field_select_render() {
$option = get_option('wppuzzle_option_select');
$options = ['one' => 'Вариант 1', 'two' => 'Вариант 2', 'three' => 'Вариант 3'];
echo '<select name="wppuzzle_option_select">';
foreach ($options as $key => $label) {
$selected = ($option === $key) ? 'selected' : '';
echo '<option value="'.esc_attr($key).'" '.$selected.'>'.esc_html($label).'</option>';
}
echo '</select>';
}
Так мы расширили форму, добавили разные типы полей.
Валидация и очистка данных
Для безопасности и корректной работы желательно валидировать данные при сохранении. Можно добавить функцию-валидатор при регистрации настроек:
register_setting('wppuzzle_settings_group', 'wppuzzle_option_text', 'wppuzzle_sanitize_text');
function wppuzzle_sanitize_text($input) {
return sanitize_text_field($input);
}
Для чекбоксов можно проверить наличие значения и вернуть 0 или 1.
Использование настроек в коде плагина
После того как пользователь сохранил настройки, их можно получить функцией get_option и использовать в логике плагина.
$text = get_option('wppuzzle_option_text', '');
$enabled = get_option('wppuzzle_option_checkbox', 0);
if ($enabled) {
echo '<p>Опция включена, текст: '.esc_html($text).'</p>';
}
Это позволит динамически менять поведение плагина в зависимости от настроек.
Полезные плагины для создания и управления настройками
Если хочется сэкономить время или сделать более сложные настройки, можно использовать готовые библиотеки и плагины:
- CMB2 — мощный фреймворк для создания мета-полей и страниц настроек.
- Redux Framework — богатый функционал для создания панелей опций с множеством типов полей.
- Settings API — собственный API WordPress, который мы применяли выше, простой и встроенный.
Они помогут ускорить разработку и добавить профессиональный вид.
Резюме по созданию плагина с настройками
Создание собственного плагина с настройками — задача вполне посильная для разработчика со средним уровнем навыков. Главное — понимать структуру и использовать встроенные API WordPress.
Ключевые шаги:
- Создать папку и главный файл плагина с шапкой.
- Добавить меню настроек через хук
admin_menu. - Зарегистрировать настройки и поля с помощью
register_setting,add_settings_sectionиadd_settings_field. - Реализовать страницу настроек с формой и выводом полей.
- Обработать и валидировать вводимые данные.
- Использовать сохранённые параметры в логике плагина.
Такой подход даст гибкость, удобство и безопасность при работе с пользовательскими настройками плагина.