Создание собственного плагина для WordPress — важный навык, который позволяет расширить функциональность сайта и адаптировать CMS под конкретные задачи. В этой статье мы подробно рассмотрим, как с нуля сделать простой, но рабочий плагин, а также разберем лучшие практики разработки и безопасности.
Понимание структуры и принципов плагинов WordPress
Плагины — это модули, которые подключаются к ядру WordPress и изменяют или дополняют его функционал. Каждый плагин — это папка с файлами, основной из которых — PHP-файл с шапкой, где указывается название, версия, автор и описание.
Стандартная структура простого плагина выглядит так:
wp-shablon-myplugin/
wp-shablon-myplugin.php
readme.txt
assets/
includes/
Основной файл wp-shablon-myplugin.php должен содержать правильный заголовок, чтобы WordPress распознал плагин:
<?php
/**
* Plugin Name: WP-Shablon Example Plugin
* Plugin URI: https://wp-shablon.ru
* Description: Пример простого плагина для WordPress
* Version: 1.0
* Author: WP-Shablon
* License: GPL2
*/
// Код плагинаБез этого заголовка плагин не отобразится в списке установленных в админке.
Создание базового плагина: шаг за шагом
Начнем с простого примера: создадим плагин, который добавляет в админ-панель уведомление.
1. Создаем папку и файл плагина
В каталоге wp-content/plugins/ создайте папку wp-shablon-notice, в ней файл wp-shablon-notice.php с описанным выше заголовком.
2. Добавляем код для вывода админ-уведомления
Используем хук admin_notices, чтобы добавить сообщение на все страницы админки:
<?php
/**
* Plugin Name: WP-Shablon Admin Notice
* Description: Показывает тестовое уведомление в админке
* Version: 1.0
* Author: WP-Shablon
*/
function wp_shablon_admin_notice() {
echo '<div class="notice notice-success is-dismissible"><p>Привет от WP-Shablon! Ваш плагин работает.</p></div>';
}
add_action('admin_notices', 'wp_shablon_admin_notice');
Этот код выведет зеленое уведомление с возможностью закрытия на всех страницах админки.
Расширение плагина: добавление настроек в админ-панель
Часто плагины требуют интерфейс для изменения параметров. Добавим страницу настроек с одной опцией.
Добавление меню настроек
Используем хук admin_menu для регистрации страницы настроек:
function wp_shablon_add_settings_page() {
add_options_page(
'Настройки WP-Shablon',
'WP-Shablon',
'manage_options',
'wp-shablon-settings',
'wp_shablon_render_settings_page'
);
}
add_action('admin_menu', 'wp_shablon_add_settings_page');
Создаем функцию отображения страницы настроек
Отобразим форму с одной настройкой — приветственным сообщением:
function wp_shablon_render_settings_page() {
// Проверяем, что пользователь имеет право редактировать настройки
if (!current_user_can('manage_options')) {
return;
}
// Сохраняем данные при отправке формы
if (isset($_POST['wp_shablon_message'])) {
check_admin_referer('wp_shablon_save_settings');
update_option('wp_shablon_message', sanitize_text_field($_POST['wp_shablon_message']));
echo '<div class="updated"><p>Настройки сохранены.</p></div>';
}
$message = get_option('wp_shablon_message', 'Привет от WP-Shablon!');
?>
<div class="wrap">
<h1>Настройки WP-Shablon</h1>
<form method="post" action="">
<?php wp_nonce_field('wp_shablon_save_settings'); ?>
<table class="form-table">
<tr>
<th><label for="wp_shablon_message">Текст сообщения</label></th>
<td><input name="wp_shablon_message" type="text" id="wp_shablon_message" value="<?php echo esc_attr($message); ?>" class="regular-text" /></td>
</tr>
</table>
<input type="submit" class="button button-primary" value="Сохранить" />
</form>
</div>
<?php
}
Теперь пользователь может изменить текст уведомления.
Обновляем админ-уведомление с настройкой
Изменим функцию вывода уведомления, чтобы использовать сохраненное значение:
function wp_shablon_admin_notice() {
$message = get_option('wp_shablon_message', 'Привет от WP-Shablon! Ваш плагин работает.');
echo '<div class="notice notice-success is-dismissible"><p>' . esc_html($message) . '</p></div>';
}
add_action('admin_notices', 'wp_shablon_admin_notice');
Рекомендации по безопасности и производительности плагина
При разработке плагина важно учитывать несколько ключевых аспектов:
- Использование функций санитизации и проверки nonce — это предотвращает атаки CSRF и XSS.
- Правильные права доступа — используйте
current_user_can()для ограничения доступа к настройкам. - Оптимизация загрузки — не нагружайте фронтенд лишним кодом, если это не нужно.
- Использование префиксов — чтобы избежать конфликтов функций и переменных с другими плагинами, в нашем примере используется префикс
wp_shablon_.
Дополнительные возможности и пути развития плагина
После создания базового плагина можно добавить:
- Локализацию с помощью функций
__()и_e()для поддержки разных языков. - Расширенные настройки с использованием API настроек WordPress.
- Подключение CSS и JS для улучшения интерфейса.
- Обработку AJAX-запросов для динамического взаимодействия без перезагрузки страницы.
Все это позволит сделать плагин более удобным и функциональным.
Пример подключения скриптов и стилей
function wp_shablon_admin_assets($hook) {
if ($hook !== 'settings_page_wp-shablon-settings') {
return;
}
wp_enqueue_style('wp-shablon-admin-style', plugins_url('assets/admin.css', __FILE__));
wp_enqueue_script('wp-shablon-admin-script', plugins_url('assets/admin.js', __FILE__), array('jquery'), null, true);
}
add_action('admin_enqueue_scripts', 'wp_shablon_admin_assets');
Таким образом, вы подключите свои стили и скрипты только на странице настроек.