Создание собственного плагина для WordPress — это отличный способ добавить уникальный функционал на сайт, не полагаясь на сторонние решения. В этой статье мы подробно разберём, как создать простой и безопасный плагин с нуля, рассмотрим структуру, основные хуки и лучшие практики. Всё изложено понятным языком и с примерами кода, чтобы вы могли сразу начать разработку.
Почему стоит создавать собственный плагин WordPress
Часто готовые плагины не совсем подходят под задачи проекта: они могут быть слишком нагружены функциями, медленно работать или иметь лишний код. Создавая свой плагин, вы получаете полный контроль над функционалом, улучшаете производительность и безопасность сайта. Кроме того, это полезный навык для любого разработчика, работающего с WordPress.
Создание плагина также позволяет:
- Интегрировать уникальные функции, которые отсутствуют в репозитории WordPress.
- Изучить внутренние механизмы WordPress и его API.
- Обеспечить совместимость с вашей темой и другими плагинами.
Структура плагина WordPress: с чего начать
Минимальный плагин — это один PHP-файл с обязательным заголовком, который WordPress распознаёт как плагин. Для примера создадим плагин с именем WPReg Custom Plugin.
Создайте папку wpreg-custom-plugin в директории /wp-content/plugins/ и внутри неё файл wpreg-custom-plugin.php со следующим содержимым:
<?php
/*
Plugin Name: WPReg Custom Plugin
Plugin URI: https://wpreg.ru/
Description: Пример простого плагина для демонстрации структуры.
Version: 1.0
Author: WPReg
Author URI: https://wpreg.ru/
License: GPL2
*/
// Защита от прямого доступа
if (!defined('ABSPATH')) {
exit;
}
// Основная функция плагина
function wpreg_custom_plugin_init() {
// Код инициализации
}
add_action('init', 'wpreg_custom_plugin_init');
Обратите внимание на защиту от прямого вызова файла: if (!defined('ABSPATH')) { exit; } — это обязательная практика безопасности.
Обязательный заголовок плагина
Первым в файле должен идти комментарий с метаданными. WordPress использует их для отображения плагина в админке. Поля Plugin Name, Description, Version и Author обязательны для удобства.
Подключение функций и хуков
Основной код плагина размещаем в функциях и подключаем их к нужным хукам WordPress. В примере выше мы подключаем функцию wpreg_custom_plugin_init к хуку init, который вызывается при загрузке WordPress.
Добавление функционала: пример создания шорткода
Шорткоды — простой способ вывести динамический контент в постах и страницах. Добавим в наш плагин шорткод, который выводит текущую дату и приветствие.
function wpreg_custom_plugin_shortcode() {
$date = date('d.m.Y');
return '<p>Сегодня ' . $date . '. Привет от WPReg!</p>';
}
add_shortcode('wpreg_greeting', 'wpreg_custom_plugin_shortcode');
Теперь, если в любом месте контента вставить [wpreg_greeting], он заменится на текст с датой и приветствием.
Расширяем шорткод параметрами
Чтобы сделать шорткод гибче, можно добавить параметры. Например, цвет текста:
function wpreg_custom_plugin_shortcode($atts) {
$atts = shortcode_atts(array(
'color' => 'black'
), $atts, 'wpreg_greeting');
$date = date('d.m.Y');
return '<p style="color:' . esc_attr($atts['color']) . '">Сегодня ' . $date . '. Привет от WPReg!</p>';
}
add_shortcode('wpreg_greeting', 'wpreg_custom_plugin_shortcode');
Теперь в контенте можно писать [wpreg_greeting color="red"], чтобы получить красный текст.
Добавление страницы настроек плагина в админку WordPress
Чтобы дать пользователям возможность менять параметры плагина, создадим страницу настроек. Для этого используем хук admin_menu и функцию add_options_page.
function wpreg_custom_plugin_menu() {
add_options_page(
'Настройки WPReg Custom Plugin',
'WPReg Plugin',
'manage_options',
'wpreg-custom-plugin',
'wpreg_custom_plugin_settings_page'
);
}
add_action('admin_menu', 'wpreg_custom_plugin_menu');
function wpreg_custom_plugin_settings_page() {
if (!current_user_can('manage_options')) {
wp_die('Доступ запрещён');
}
// Обработка сохранения настроек
if (isset($_POST['wpreg_custom_plugin_color'])) {
check_admin_referer('wpreg_custom_plugin_save_settings');
update_option('wpreg_custom_plugin_color', sanitize_text_field($_POST['wpreg_custom_plugin_color']));
echo '<div class="updated"><p>Настройки сохранены.</p></div>';
}
$color = get_option('wpreg_custom_plugin_color', 'black');
?>
<div class="wrap">
<h1>Настройки WPReg Custom Plugin</h1>
<form method="post" action="">
<?php wp_nonce_field('wpreg_custom_plugin_save_settings'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">Цвет текста шорткода</th>
<td><input type="text" name="wpreg_custom_plugin_color" value="<?php echo esc_attr($color); ?>" /></td>
</tr>
</table>
<input type="submit" class="button-primary" value="Сохранить" />
</form>
</div>
<?php
}
В этом примере мы создали простую страницу с одним полем для настройки цвета текста шорткода. Значение сохраняется в базу данных через функцию update_option.
Безопасность и проверка прав
Обязательно проверяйте права пользователя с помощью current_user_can и используйте check_admin_referer для защиты от CSRF. Это стандартные меры безопасности при работе с формами в админке.
Локализация плагина для поддержки разных языков
Чтобы плагин был понятен на разных языках, используйте функции локализации: __() и _e(). Например, изменим заголовок страницы настроек:
function wpreg_custom_plugin_settings_page() {
// ...
?>
<div class="wrap">
<h1><?php _e('Настройки WPReg Custom Plugin', 'wpreg-custom-plugin'); ?></h1>
<form method="post" action="">
<!-- форма -->
</form>
</div>
<?php
}
Для этого создайте файл перевода wpreg-custom-plugin.pot и используйте стандартные инструменты WordPress для генерации .po и .mo файлов.
Рекомендации по разработке и отладке плагинов
При разработке плагина учитывайте следующие моменты:
- Используйте префиксы для функций и переменных, например
wpreg_, чтобы избежать конфликтов. - Используйте возможности хуков WordPress для расширения функционала без прямого изменения ядра.
- Тестируйте плагин на разных версиях WordPress и с разными темами.
- Включайте режим отладки WordPress для выявления ошибок (
define('WP_DEBUG', true);вwp-config.php). - Документируйте код и добавляйте комментарии, чтобы облегчить поддержку.
Вот пример функции с префиксом:
function wpreg_custom_plugin_get_data() {
// код получения данных
}
Заключение
Создание собственного плагина WordPress — вполне достижимая задача, если следовать описанной структуре и придерживаться стандартов. В результате вы получите гибкий и производительный инструмент, который легко поддерживать и развивать. Практикуйтесь на небольших функциональных модулях, постепенно усложняя задачи.