9. Разработка плагинов
Плагины позволяют расширять функциональность WordPress без изменения файлов ядра или темы.
Структура плагина
Заголовок раздела «Структура плагина»Минимальный плагин — это PHP-файл в директории wp-content/plugins/ с заголовком в комментариях. Однако профессиональные плагины имеют четкую структуру.
my-awesome-plugin/├── assets/ # JS, CSS, Images├── includes/ # PHP логика, классы├── templates/ # Файлы шаблонов├── languages/ # i18n файлы└── my-awesome-plugin.php # Главный файлГлавный файл плагина
Заголовок раздела «Главный файл плагина»<?php/** * Plugin Name: Yasha Custom Functionality * Description: Обучающий плагин для демонстрации разработки. * Version: 1.0.0 * Author: Yasha Learn Code * License: GPL2 */
// Защита от прямого доступаif ( ! defined( 'ABSPATH' ) ) { exit;}
// Константыdefine( 'YASHA_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );define( 'YASHA_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
// Подключение файловrequire_once YASHA_PLUGIN_DIR . 'includes/class-yasha-init.php';Жизненный цикл плагина
Заголовок раздела «Жизненный цикл плагина»graph LR A[Установка] --> B[Активация] B --> C[Работа Hooks/Filters] C --> D[Деактивация] D --> E[Удаление]Активация и Деактивация
Заголовок раздела «Активация и Деактивация»Используются для создания таблиц в БД или настройки дефолтных опций.
function yasha_plugin_activate() { // Логика при активации (например, flush_rewrite_rules)}register_activation_hook( __FILE__, 'yasha_plugin_activate' );
function yasha_plugin_deactivate() { // Очистка при отключении}register_deactivation_hook( __FILE__, 'yasha_plugin_deactivate' );Использование хуков в плагине
Заголовок раздела «Использование хуков в плагине»Лучшая практика — использовать объектно-ориентированный подход для организации хуков.
class Yasha_Core { public function __construct() { add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_assets' ] ); }
public function enqueue_assets() { wp_enqueue_style( 'yasha-styles', YASHA_PLUGIN_URL . 'assets/css/main.css' ); }}new Yasha_Core();- Всегда используйте префиксы в именах функций и классов, чтобы избежать конфликтов.
- Не забывайте про
register_uninstall_hookдля полной очистки данных после удаления плагина. - Организуйте код по логическим папкам.
Интерактивный пример
Заголовок раздела «Интерактивный пример»Структура WordPress-плагина: