Создание собственного плагина в WordPress — важный навык для любого разработчика, работающего с этой платформой. Это позволяет расширять функциональность сайта без правки ядра и тем, а также делать решения, идеально подходящие под конкретные задачи.
Что такое плагин и зачем его создавать
Плагин — это набор функций, который расширяет или изменяет стандартное поведение WordPress. Зачем создавать свой плагин, а не использовать готовые? Во-первых, уникальные задачи требуют уникальных решений. Во-вторых, так вы контролируете код и его обновления. В-третьих, это отличный способ повысить квалификацию и понять, как устроен WordPress изнутри.
Структура простого плагина WordPress
Минимальный плагин — это один PHP-файл с специальным заголовком, который WordPress распознает. Создадим файл wp-team-simple-plugin.php в папке wp-content/plugins и добавим в него:
<?php
/*
Plugin Name: WP-Team Simple Plugin
Description: Пример простого плагина для WordPress
Version: 1.0
Author: WP-Team
*/
// Код плагина здесь
Без этого заголовка WordPress не увидит плагин в админке.
Добавляем функциональность: пример создания шорткода
Добавим в плагин шорткод, который выводит текущую дату. Это классический пример расширения функционала.
function wpteam_simple_plugin_current_date() {
return date('d.m.Y');
}
add_shortcode('current_date', 'wpteam_simple_plugin_current_date');
Теперь в любом месте сайта можно вставить [current_date], и вместо него отобразится текущая дата. Это показывает, как просто добавлять новые возможности.
Как подключить стили и скрипты в плагине
Чтобы ваш плагин выглядел аккуратно и работал динамично, часто нужны CSS и JavaScript. Делается это через хуки WordPress.
function wpteam_simple_plugin_enqueue_scripts() {
wp_enqueue_style('wpteam-simple-style', plugin_dir_url(__FILE__) . 'css/style.css');
wp_enqueue_script('wpteam-simple-script', plugin_dir_url(__FILE__) . 'js/script.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'wpteam_simple_plugin_enqueue_scripts');
Создайте папки css и js рядом с файлом плагина и положите туда свои файлы. Этот способ гарантирует, что скрипты и стили подключаются только тогда, когда нужно.
Работа с базой данных и опциями плагина
Часто плагину нужно хранить настройки. WordPress предоставляет удобный API для работы с опциями.
Пример сохранения и получения опции:
function wpteam_simple_plugin_save_option($value) {
update_option('wpteam_simple_option', sanitize_text_field($value));
}
function wpteam_simple_plugin_get_option() {
return get_option('wpteam_simple_option', 'значение по умолчанию');
}
Для удобства в админке можно создать страницу настроек, но это уже более сложная тема.
Создание страницы настроек плагина
Чтобы пользователи могли менять параметры плагина через админку, добавим меню и форму.
function wpteam_simple_plugin_add_admin_menu() {
add_options_page(
'Настройки WP-Team Simple Plugin',
'WP-Team Simple',
'manage_options',
'wpteam-simple-plugin',
'wpteam_simple_plugin_options_page'
);
}
add_action('admin_menu', 'wpteam_simple_plugin_add_admin_menu');
function wpteam_simple_plugin_options_page() {
if (!current_user_can('manage_options')) {
return;
}
if (isset($_POST['wpteam_simple_option'])) {
wpteam_simple_plugin_save_option($_POST['wpteam_simple_option']);
echo '<div class="updated">Настройки сохранены.</div>';
}
$value = wpteam_simple_plugin_get_option();
echo '<form method="post" action="">';
echo '<label>Значение опции: </label>';
echo '<input type="text" name="wpteam_simple_option" value="' . esc_attr($value) . '" />';
echo '<input type="submit" value="Сохранить" />';
echo '</form>';
}
Этот пример показывает базовый способ добавления страницы настроек без использования дополнительных библиотек.
Безопасность и стандарты разработки плагинов
При создании плагина важно соблюдать безопасность. Всегда фильтруйте и экранируйте входящие данные, используйте sanitize_text_field, esc_html и подобные функции.
Не забывайте про проверку прав пользователя через current_user_can и защиту форм с помощью wp_nonce_field.
Также придерживайтесь стандартов кодирования WordPress для удобства поддержки и совместимости.
Пример защиты формы с nonce
function wpteam_simple_plugin_options_page() {
if (!current_user_can('manage_options')) {
return;
}
if (isset($_POST['wpteam_simple_option']) && check_admin_referer('wpteam_simple_plugin_save', 'wpteam_simple_nonce')) {
wpteam_simple_plugin_save_option($_POST['wpteam_simple_option']);
echo '<div class="updated">Настройки сохранены.</div>';
}
$value = wpteam_simple_plugin_get_option();
echo '<form method="post" action="">';
wp_nonce_field('wpteam_simple_plugin_save', 'wpteam_simple_nonce');
echo '<label>Значение опции: </label>';
echo '<input type="text" name="wpteam_simple_option" value="' . esc_attr($value) . '" />';
echo '<input type="submit" value="Сохранить" />';
echo '</form>';
}
Как тестировать и отлаживать плагин
Разработка плагина — это цикл тестирования и исправления ошибок. Используйте WP_DEBUG в wp-config.php, логирование через error_log и плагины для отладки, например Query Monitor.
Тестируйте плагин на локальной копии сайта, чтобы не нарушить работу боевого проекта. Используйте разные версии PHP и WordPress для совместимости.
Советы по улучшению плагина и публикации
Когда плагин готов, оформите его README с описанием и инструкциями. Если планируете публикацию в репозитории WordPress, изучите требования по безопасности и лицензированию.
Регулярно обновляйте код, улучшайте функциональность и учитывайте отзывы пользователей.