Создание собственного плагина WordPress — отличный способ расширить функциональность вашего сайта и получить уникальные возможности, которые невозможно реализовать с помощью готовых решений. В этой статье мы подробно рассмотрим, как создать плагин с собственной страницей настроек в админ-панели WordPress. Это поможет вам понять, как работают плагины и как можно добавлять пользовательские параметры для удобного управления.
Почему стоит создавать собственный плагин
Многие разработчики начинают с использования готовых плагинов, но со временем сталкиваются с ограничениями: функционал не всегда подходит под конкретные задачи, обновления могут ломать совместимость, а лишний код замедляет сайт. Создавая собственный плагин, вы получаете полный контроль над кодом, избавляетесь от ненужных функций и легко интегрируете уникальные возможности.
Кроме того, это полезный навык, который пригодится для работы на фрилансе или в компании — вы сможете быстро создавать кастомные решения под запросы клиентов.
Структура плагина WordPress
Минимальный плагин — это один PHP-файл с заголовком, который содержит информацию о плагине и основной код. Обычно плагины располагаются в каталоге wp-content/plugins. Для плагина с настройками нужна еще и папка с файлами, чтобы удобно поддерживать и расширять функционал.
Пример минимальной структуры:
my-plugin/— корневая папка плагинаmy-plugin/my-plugin.php— основной файл с заголовком плагинаmy-plugin/admin-settings.php— файл с кодом страницы настроек (можно и в основном файле, но так удобнее)
Создаем базовый плагин
Начнем с простого шаблона файла my-plugin.php:
<?php
/**
* Plugin Name: WPBoot Настройки плагина
* Description: Пример плагина с пользовательской страницей настроек
* Version: 1.0
* Author: WPBoot
*/
// Защита от прямого запуска
if (!defined('ABSPATH')) {
exit;
}
// Подключаем страницу настроек
require_once plugin_dir_path(__FILE__) . 'admin-settings.php';
Этот код определяет плагин и подключает файл с настройками. Следующий шаг — добавить страницу настроек в админ-панель.
Добавляем страницу настроек в меню WordPress
В файле admin-settings.php регистрируем страницу с помощью хука admin_menu:
<?php
add_action('admin_menu', 'wpboot_add_settings_page');
function wpboot_add_settings_page() {
add_options_page(
'Настройки WPBoot', // Заголовок страницы
'WPBoot Настройки', // Название меню
'manage_options', // Права доступа
'wpboot-settings', // Уникальный slug
'wpboot_render_settings_page' // Функция вывода содержимого
);
}
function wpboot_render_settings_page() {
if (!current_user_can('manage_options')) {
return;
}
?>
<div class="wrap">
<h1>Настройки плагина WPBoot</h1>
<form method="post" action="options.php">
<?php
settings_fields('wpboot_options_group');
do_settings_sections('wpboot-settings');
submit_button();
?>
</form>
</div>
<?php
}
Здесь мы добавили страницу в раздел «Настройки» и создали форму для вывода полей настроек.
Регистрируем настройки и поля
Для хранения настроек используем API WordPress Settings. В этом же файле добавим регистрацию настроек:
add_action('admin_init', 'wpboot_register_settings');
function wpboot_register_settings() {
register_setting('wpboot_options_group', 'wpboot_option_text');
add_settings_section(
'wpboot_main_section',
'Основные настройки',
'wpboot_section_callback',
'wpboot-settings'
);
add_settings_field(
'wpboot_option_text',
'Текстовое поле',
'wpboot_text_field_render',
'wpboot-settings',
'wpboot_main_section'
);
}
function wpboot_section_callback() {
echo 'Настройте параметры плагина WPBoot ниже:';
}
function wpboot_text_field_render() {
$value = get_option('wpboot_option_text', '');
echo '<input type="text" name="wpboot_option_text" value="' . esc_attr($value) . '" size="50" />';
}
Мы зарегистрировали настройку wpboot_option_text, создали секцию и поле ввода. Теперь при сохранении настройки будут сохраняться в базу данных.
Использование настроек в плагине
Чтобы использовать значение настройки в коде плагина, достаточно вызвать:
$text = get_option('wpboot_option_text', 'значение по умолчанию');
// Пример использования
echo 'Значение настройки: ' . esc_html($text);
Так можно динамически менять поведение плагина на основе введенных пользователем данных.
Расширение плагина: добавляем чекбокс и селект
Для примера добавим в настройки чекбокс и выпадающий список. Это позволит лучше понять работу с разными типами полей.
add_action('admin_init', 'wpboot_register_settings');
function wpboot_register_settings() {
register_setting('wpboot_options_group', 'wpboot_option_text');
register_setting('wpboot_options_group', 'wpboot_option_checkbox');
register_setting('wpboot_options_group', 'wpboot_option_select');
add_settings_section(
'wpboot_main_section',
'Основные настройки',
'wpboot_section_callback',
'wpboot-settings'
);
add_settings_field(
'wpboot_option_text',
'Текстовое поле',
'wpboot_text_field_render',
'wpboot-settings',
'wpboot_main_section'
);
add_settings_field(
'wpboot_option_checkbox',
'Чекбокс включения',
'wpboot_checkbox_field_render',
'wpboot-settings',
'wpboot_main_section'
);
add_settings_field(
'wpboot_option_select',
'Выберите вариант',
'wpboot_select_field_render',
'wpboot-settings',
'wpboot_main_section'
);
}
function wpboot_checkbox_field_render() {
$value = get_option('wpboot_option_checkbox', '');
echo '<input type="checkbox" name="wpboot_option_checkbox" value="1" ' . checked(1, $value, false) . ' /> Включено';
}
function wpboot_select_field_render() {
$value = get_option('wpboot_option_select', 'option1');
$options = [
'option1' => 'Вариант 1',
'option2' => 'Вариант 2',
'option3' => 'Вариант 3',
];
echo '<select name="wpboot_option_select">';
foreach ($options as $key => $label) {
printf('<option value="%s" %s>%s</option>', esc_attr($key), selected($value, $key, false), esc_html($label));
}
echo '</select>';
}
Теперь в настройках будут три поля разных типов, которые сохраняются и доступны для использования.
Примеры полезных плагинов с расширенными настройками
Если вам нравится идея создания плагинов с настройками, посмотрите на следующие популярные плагины и их архитектуру:
- Contact Form 7 — удобная форма обратной связи с множеством параметров
- Yoast SEO — плагин для SEO с большим количеством настроек и аналитики
- WooCommerce — сложный плагин для интернет-магазинов с сотнями опций
Изучая их код, можно почерпнуть много полезного для своих проектов.
Советы по безопасности и производительности
При создании плагина с настройками важно учитывать безопасность:
- Всегда проверяйте права доступа (
current_user_can) перед выводом страниц и сохранением настроек. - Используйте функции
esc_html,esc_attrиcheckedдля безопасного вывода данных. - Обрабатывайте и валидируйте данные при сохранении настроек.
Также следите за производительностью — не загружайте лишние скрипты и стили в админке, если они не нужны.
Заключение
Создание собственного плагина с настройками — это просто, если правильно понять базовые механизмы WordPress. Вы получили пример, который можно расширять и адаптировать под любые задачи. Начните с простого, добавляйте новые поля и функционал, и вскоре сможете создавать мощные кастомные решения для своих проектов.