Создание собственного плагина для WordPress — отличный способ расширить функционал сайта, сделать уникальные решения и не зависеть от сторонних разработчиков. В этой статье мы подробно разберем, как создать плагин с нуля, рассмотрим структуру, основные хуки, безопасность и приведем примеры кода для WPBest.ru.
Что такое плагин WordPress и зачем его создавать?
Плагин — это набор PHP-скриптов, которые добавляют функциональность WordPress без изменения исходного кода движка. Создавая плагин, вы можете:
- Добавить уникальные функции на сайт;
- Автоматизировать задачи;
- Интегрировать внешний функционал;
- Расширить возможности темы.
Для разработчика собственный плагин — это свобода и контроль над кодом.
Структура простого плагина WordPress
Минимальная структура плагина:
wpbest-myplugin/ - директория плагина
wpbest-myplugin.php - основной файл плагина
readme.txt (опционально)
/includes/ - вспомогательные файлы
/assets/ - CSS, JS, изображения
Основной файл должен иметь заголовок, чтобы WordPress распознал плагин:
<?php
/*
Plugin Name: WPBest My Plugin
Plugin URI: https://wpbest.ru
Description: Пример простого плагина для WordPress
Version: 1.0
Author: WPBest
Author URI: https://wpbest.ru
License: GPL2
*/
// Твой код здесь
Регистрация хуков: действия и фильтры
WordPress построен на системе хуков, которые позволяют изменить поведение ядра и других компонентов.
Действия (Actions)
Действия — это события, во время которых можно выполнять свой код.
function wpbest_myplugin_init() {
// код при инициализации плагина
}
add_action('init', 'wpbest_myplugin_init');
Пример: добавим пользовательский тип записи:
function wpbest_register_custom_post_type() {
$args = [
'public' => true,
'label' => 'Продукты'
];
register_post_type('product', $args);
}
add_action('init', 'wpbest_register_custom_post_type');
Фильтры (Filters)
Фильтры позволяют изменять данные перед выводом или сохранением.
function wpbest_change_excerpt_length($length) {
return 20; // длина отрывка в словах
}
add_filter('excerpt_length', 'wpbest_change_excerpt_length');
Обработка форм и безопасность
Если в плагине есть формы для ввода, нужно обязательно защитить их от CSRF и XSS.
Используйте wp_nonce_field() для добавления nonce в форму и проверяйте его при обработке.
function wpbest_render_form() {
echo '<form method="post" action="">';
wp_nonce_field('wpbest_form_action', 'wpbest_form_nonce');
echo '<input type="text" name="wpbest_data" />';
echo '<input type="submit" value="Отправить" />';
echo '</form>';
}
function wpbest_handle_form() {
if (!empty($_POST['wpbest_form_nonce']) && wp_verify_nonce($_POST['wpbest_form_nonce'], 'wpbest_form_action')) {
$data = sanitize_text_field($_POST['wpbest_data']);
// Обработка $data
echo 'Данные сохранены: ' . esc_html($data);
}
}
add_action('admin_post_wpbest_form_submit', 'wpbest_handle_form');
Подключение CSS и JS в плагине
Для добавления стилей и скриптов используйте функцию wp_enqueue_scripts для фронтенда и admin_enqueue_scripts для админки.
function wpbest_enqueue_assets() {
wp_enqueue_style('wpbest-style', plugins_url('assets/style.css', __FILE__));
wp_enqueue_script('wpbest-script', plugins_url('assets/script.js', __FILE__), ['jquery'], null, true);
}
add_action('wp_enqueue_scripts', 'wpbest_enqueue_assets');
Это позволит корректно загрузить файлы без конфликтов.
Пример плагина: добавление виджета с приветствием
Создадим простой виджет, который выводит приветствие и текущую дату.
class WPBest_Greeting_Widget extends WP_Widget {
public function __construct() {
parent::__construct(
'wpbest_greeting_widget',
'WPBest Приветствие',
['description' => 'Выводит приветствие и дату']
);
}
public function widget($args, $instance) {
echo $args['before_widget'];
echo '<h3>Привет от WPBest!</h3>';
echo '<p>Сегодня: ' . date('d.m.Y') . '</p>';
echo $args['after_widget'];
}
}
function wpbest_register_greeting_widget() {
register_widget('WPBest_Greeting_Widget');
}
add_action('widgets_init', 'wpbest_register_greeting_widget');
Этот код добавит новый виджет, который можно разместить в любой области виджетов темы.
Отладка и логирование в плагине
Для поиска ошибок полезно использовать функцию error_log() и WP_DEBUG.
Пример записи в лог:
function wpbest_log_example() {
error_log('WPBest: Запуск функции wpbest_log_example');
}
add_action('init', 'wpbest_log_example');
Не забывайте отключать отладку в продакшене.
Выводы и полезные советы
Создание плагина — это несложно, если понимать базовые принципы WordPress. Главное — четко структурировать код, использовать хуки и соблюдать безопасность. В этой статье мы рассмотрели основные этапы и привели примеры, которые помогут начать разработку собственного плагина.