WordPress — мощная и гибкая CMS, которая позволяет расширять функциональность с помощью плагинов. Если вы хотите добавить уникальные возможности на свой сайт или создать решение для клиентов, самое надежное — написать собственный плагин. В этой статье мы подробно разберем, как создать базовый плагин, рассмотрим структуру, лучшие практики и предоставим примеры кода, которые можно использовать как шаблон.
Почему стоит создавать собственный плагин WordPress
Многие разработчики начинают с установки готовых плагинов, но в определенный момент возникает необходимость индивидуального функционала. Вот ключевые причины для создания собственного плагина:
- Контроль и безопасность: Можно оптимизировать код под свои задачи и избежать избыточных функций.
- Масштабируемость: Легко поддерживать и обновлять функционал без зависимости от сторонних разработчиков.
- Уникальность: Создаете решения, которых нет в репозитории WordPress.
Теперь перейдем к практике.
Структура базового плагина WordPress
Каждый плагин — это набор файлов, которые размещаются в каталоге wp-content/plugins. Минимально, это один PHP-файл с заголовочной информацией. Рассмотрим пример структуры:
wplab-custom-plugin/ // каталог плагина
|-- wplab-custom-plugin.php // главный файл плагина
|-- readme.txt // описание плагина
|-- assets/ // папка для стилей, скриптов, изображений
Главный файл должен содержать специальный комментарий в начале, который WordPress распознает:
<?php
/*
Plugin Name: WPLab Custom Plugin
Plugin URI: https://wplab.ru
Description: Собственный плагин для расширения функционала WordPress
Version: 1.0
Author: WPLab
Author URI: https://wplab.ru
License: GPL2
*/
// Код плагина начинается здесь
Добавление функционала через хуки и фильтры
Ключевой механизм расширения WordPress — это хуки (actions) и фильтры (filters). Рассмотрим простой пример добавления сообщения в админ-панель.
Пример: вывод сообщения в админ-бар
Добавим кастомное приветствие в верхний админ-бар:
function wplab_custom_admin_bar_message( $wp_admin_bar ) {
$args = array(
'id' => 'wplab_message',
'title' => 'Привет от WPLab!',
'href' => false,
'meta' => array(
'class' => 'wplab-admin-bar-message'
)
);
$wp_admin_bar->add_node( $args );
}
add_action( 'admin_bar_menu', 'wplab_custom_admin_bar_message', 100 );
Этот код добавляет пункт меню с сообщением в админ-бар. Функцию мы именуем с префиксом wplab_, чтобы избежать конфликтов.
Регистрация и подключение стилей и скриптов в плагине
Чтобы улучшить интерфейс и добавить интерактивность, часто нужны CSS и JS. В WordPress это делается через функции wp_enqueue_style и wp_enqueue_script. Важно подключать их корректно, чтобы избежать конфликтов и ошибок.
Пример подключения стилей и скриптов
function wplab_enqueue_assets() {
wp_enqueue_style( 'wplab-style', plugin_dir_url(__FILE__) . 'assets/css/style.css', array(), '1.0' );
wp_enqueue_script( 'wplab-script', plugin_dir_url(__FILE__) . 'assets/js/script.js', array('jquery'), '1.0', true );
}
add_action( 'admin_enqueue_scripts', 'wplab_enqueue_assets' );
В этом примере стили и скрипты подключаются только в админке. Для фронтенда вместо admin_enqueue_scripts используйте wp_enqueue_scripts.
Создание шорткода для вывода информации
Шорткоды — удобный способ вставлять динамический контент в записи или страницы через простой тег.
Пример шорткода, выводящего текущее время
function wplab_current_time_shortcode() {
return 'Текущее время: ' . date( 'H:i:s' );
}
add_shortcode( 'wplab_time', 'wplab_current_time_shortcode' );
Теперь в любом месте сайта можно добавить [wplab_time] и отобразится время сервера.
Безопасность и стандарты при разработке плагинов
Даже простой плагин должен соответствовать базовым стандартам безопасности:
- Проверяйте права пользователя перед выполнением действий, изменяющих данные.
- Используйте функции WordPress для экранирования вывода (
esc_html,esc_attr). - Защищайте формы от CSRF с помощью
wp_nonce_fieldи проверки nonce.
Пример проверки nonce и прав в обработчике формы:
if ( ! isset( $_POST['wplab_nonce'] ) || ! wp_verify_nonce( $_POST['wplab_nonce'], 'wplab_save_data' ) ) {
wp_die( 'Ошибка безопасности!' );
}
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( 'Нет доступа' );
}
// обработка данных
Примеры полезных плагинов, которые можно создать самостоятельно
Чтобы вдохновиться, вот несколько идей для плагинов, которые решают практические задачи:
- Автоматическое добавление подписи в комментарии: добавляет подпись или ссылку к каждому комментарию.
- Кастомные уведомления администратору: отправляет письмо при определенных событиях, например, при новой регистрации.
- Управление дополнительными полями пользователя: добавляет новые поля в профиль и выводит их на фронтенде.
Каждую из этих задач можно реализовать с помощью базовых знаний о хуках, фильтрах и API WordPress, которые мы рассмотрели выше.