Система плагінів WordPress є основою її потужних можливостей розширення. За допомогою плагінів розробники можуть додавати до веб-сайту різноманітні функції – від простих форм для зв’язку до складних електронних комерційних систем. У цій статті ви дізнаєтесь про весь процес створення повнофункціонального плагіна, заглиблено ознайомитеся з його основною структурою, механізмами взаємодії („хаками“), аспектами безпеки та найкращими практиками розробки. У підсумку у вас з’явиться готовий до використання плагін, який можна буде
Розробна середовище та підготовчі кроки
Перш ніж почати писати перший рядок коду, стабільне та ефективне середовище розробки є надзвичайно важливим. Це дозволяє вам зосередитися на створенні логіки програми та ефективно уникати поширених помилок.
Налаштування локального середовища розробки
Рекомендується використовувати набори інструментів для налаштування локального сервера, такі як XAMPP, MAMP або більш професійний Local by Flywheel. Переконайтеся, що версія PHP (рекомендується 7.4 або вище) сумісна з середовищем, у якому буде розгортатися WordPress, та увімкніть режим налагодження (debugging mode). У WordPress…wp-config.phpУ файлі встановлені налаштування.WP_DEBUG为trueЦе дозволить побачити всі помилки та попередження на етапі розробки, що допоможе вам швидко виявити проблеми.
Рекомендуємо до прочитання. Посібник з розробки плагінів для WordPress: від нуля до створення професійних функціональних модулів。
Структурування файлів плагінів
Стандартний плагін має мати принаймні один основний файл. Зазвичай практикується створення окремої папки для плагіна, яка називається відповідно до його основної функції.my-first-pluginУ цьому папці основний файл зазвичай має ту саму назву, що й папка, але з розширенням..phpТобто,my-first-plugin.phpЧітка структура допомагає у подальшому додаванні файлів JavaScript, CSS, мовних пакетів чи класів.
Створення основного файлу плагіна та базової інформації про заголовки
“Вхід” до плагіна та процес ідентифікації користувача залежать від інформації, розташованої у вигляді заголовків (headers) на початку основного файлу плагіна. Саме ця інформація є ключовою для того, щоб WordPress визнав та завантажив плаг
Написати стандартний заголовок плагіна
На початку основного PHP-файлу необхідно використовувати певні блоки коментарів PHP для надання інформації про плагін. Ця інформація буде відображатися на сторінці керування плагінами у веб-інтерфейсі WordPress.
<?php
/**
* Plugin Name: 我的第一个功能插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个实战指南中创建的示例插件,用于演示核心开发流程。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Зокрема,Plugin Name和Text DomainЦе обов’язковий елемент; інші елементи є необов’язковими. Поле для вводу тексту.Text DomainВикористовується для підтримки інтернаціоналізації.
Забезпечення захисту від прямого доступу до файлів
Для захисту безпеки коду плагіна та запобігання можливому витоку інформації чи появі помилок, спричиненим прямим доступом до основного файлу за допомогою URL-адреси, необхідно додати перевірку прямого доступу після заголовкових даних (header information) та перед будь-яким іншим кодом.
Рекомендуємо до прочитання. Посібник зі створення власних додатків для платформи WooCommerce: як створити свій унікальний інтернет-магазин。
// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
exit;
} КонстантаABSPATHЦе абсолютний шлях до кореневого каталогу WordPress; він визначається під час виконання системи WordPress. Це умова гарантує, що наступний код виконається лише у середовищі WordPress.
Реалізація основних функцій та взаємодії з системою WordPress через хаки (hooks)
WordPress надає два потужні механізми – дії-хаки (action hooks) та фільтри-хаки (filter hooks) – які дозволяють вашому коду втручатися у основний процес роботи системи чи змінювати дані у певні моменти часу. Розуміння та ефективне використання цих механізмів є ключовим для розробки плагінів.
Використовуйте дії-хаки (action hooks) для додавання нових функцій.
Акційні хаки (action hooks) дозволяють виконувати власний код під час виникнення певних подій. Наприклад, ми можемо створити функцію, яка автоматично додає інформацію про авторські права внизу статті. Для цього потрібно використовуватиthe_contentФільтри (які по суті є фільтр-хуками, але використовуються аналогічно до дій-хуків) таwp_enqueue_scriptsАкційні хаки використовуються для завантаження ресурсів.
Спочатку ми напишемо функцію.mfp_add_copyright_noticeІ під’єднати його до…the_contentНа гаку.
// 在文章内容后添加版权声明
function mfp_add_copyright_notice( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$copyright_text = '<p><em>Авторські права на цей текст належать цьому веб-сайту. При перепублікації необхідно вказати джерело.</em></p>';
$content .= $copyright_text;
}
return $content;
}
add_filter( 'the_content', 'mfp_add_copyright_notice' ); Умовний контроль гарантує, що повідомлення про авторські права відображатиметься лише у основному циклі обробки однієї статті на фронтенді, не впливаючи на вигляд сторінки, її анотації чи на процеси, що відбуваються у
Використання фільтрів та хуків для модифікації даних
Фільтрові хаки (filter hooks) призначені для модифікації даних, які надаються до них. Припустимо, ми хочемо змінити певні частини заголовка веб-сайту. Ми можемо створити відповідну функцію та додати її до системи, яка використовуєwp_titleАбо ще сучасніші варіанти.document_title_partsФільтри.
Рекомендуємо до прочитання. Детальний опис повного процесу розробки плагінів для WordPress: від початківця до майстра – практичний посібник。
// 修改网站标题后缀
function mfp_modify_title_suffix( $title ) {
if ( is_home() ) {
$title['suffix'] = ' | 我的精彩博客';
}
return $title;
}
add_filter( 'document_title_parts', 'mfp_modify_title_suffix' ); Безпечне введення скриптів та стилів
Щоб додати фронтенд-стиль або інтерактивні функції до плагіна, необхідно використовувати методи, рекомендовані WordPress.wp_enqueue_style()和wp_enqueue_script()Функція, і через…wp_enqueue_scriptsВиклик через хук (hook).
// 注册并排队插件的前端样式
function mfp_enqueue_frontend_assets() {
// 获取插件目录的URL
$plugin_url = plugin_dir_url( __FILE__ );
// 排队一个CSS文件
wp_enqueue_style(
'mfp-frontend-style',
$plugin_url . 'assets/css/frontend.css',
array(),
'1.0.0'
);
// 排队一个JS文件,并依赖jQuery
wp_enqueue_script(
'mfp-frontend-script',
$plugin_url . 'assets/js/frontend.js',
array( 'jquery' ),
'1.0.0',
true // 在页脚加载
);
}
add_action( 'wp_enqueue_scripts', 'mfp_enqueue_frontend_assets' ); Створення сторінки керування та налаштувань
Багато плагінів потребують надання користувачам можливостей налаштувань. WordPress надає API для налаштувань, який дозволяє створювати меню керування та сторінки з параметрами безпечним та стандартизованим способом.
Додати меню керування
Насамперед, використайтеadd_action( ‘admin_menu’, … )Щоб зареєструвати новий елемент меню керування або підменю, використовуйте наступну функцію:mfp_create_admin_menuПід головним меню “Налаштування” буде додано підменю.
// 创建插件管理菜单
function mfp_create_admin_menu() {
add_options_page(
‘我的插件设置’, // 页面标题
‘我的插件’, // 菜单标题
‘manage_options’, // 权限要求
‘mfp-settings’, // 菜单slug
‘mfp_settings_page_html’ // 用于输出页面内容的回调函数
);
}
add_action( ‘admin_menu’, ‘mfp_create_admin_menu’ ); Створення сторінки налаштувань та полів
Далі необхідно визначити функцію-повернення (callback function).mfp_settings_page_htmlЗавдання полягає у відображенні вмісту сторінки, а також у реєстрації групи налаштувань, одного параметра та конкретних полів за допомогою встановленої API.
// 设置页面的HTML输出
function mfp_settings_page_html() {
// 检查用户权限
if ( ! current_user_can( ‘manage_options’ ) ) {
return;
}
?>
<div class="“wrap”">
<h1><p><strong> <p><strong></h1>
<form action="/uk/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
<?php
// 输出设置字段、非ce等
settings_fields( ‘mfp_options_group’ );
do_settings_sections( ‘mfp-settings’ );
submit_button( ‘保存设置’ );
?>
<input type="hidden" name="trp-form-language" value="uk"/></form>
</div>
‘mfp_field_copyright_text’ )
);
}
add_action( ‘admin_init’, ‘mfp_settings_init’ );
// 渲染版权文本文档字段
function mfp_field_copyright_text_html() {
$options = get_option( ‘mfp_options’ );
$value = $options[‘copyright_text’] ?? ‘默认版权文本’; // PHP 7.0+ 空合并运算符
?>
<input type="“text”"
id="“mfp_field_copyright_text”"
name="“mfp_options[copyright_text]”"
value="“NO NUMERIC NOISE KEY" 1000”
class="“regular-text”">
<?php
} Тепер ви можете скористатися тим, що було зроблено раніше.mfp_add_copyright_noticeУ функції використовується…get_option( ‘mfp_options’ )[‘copyright_text’]Необхідно динамічно отримувати текстові дані, встановлені користувачем у бекенді, щоб функції плагіна були налаштовувані.
підсумок
У цій статті детально описано повний процес розробки плагіна для WordPress з нуля. Ми почали з налаштування середовища розробки та створення головного файлу зі стандартною інформацією про плагін, підкресливши важливість заходів безпеки під час розробки. Далі ми глибоко розглянули основи розробки плагінів для WordPress – механізм хуків (hooks), включаючи способи використання хуків дій (action hooks) для виконання коду та хуків фільтрів (filter hooks) для зміни даних, а також продемонстрували методи безпечного завантаження передньої частини сайту (frontend resources). Нарешті, за допомогою API налаштувань WordPress ми створили сторінку управління плагіном на професійному рівні, що дозволяє користувачам самостійно налаштовувати функції плагіна.
Увесь процес розробки відповідає стандартам кодування та найкращим практикам WordPress, зокрема використанню унікальних префіксів для функцій, перевірці та ескапуванню даних, а також створенню основ для підтримки інтернаціоналізації. Опанувавши ці основні знання, ви зможете безмежно розширювати функціонал свого плагіна, комбінуючи різні хаки (hooks), створюючи власні таблиці баз даних, розробляючи додаткові інструменти чи короткі кодові фрагменти.
Часті запитання
Як вибрати відповідні префікси для функцій та класів плагінів?
Усі глобальні функції, класи, змінні та константи у плагінах мають використовувати унікальні префікси для запобігання конфліктам іменувань з іншими плагінами чи темами. Префікси зазвичай складаються з абревіатур чи скорочень назв плагінів. Наприклад, якщо назва плагіна – “My First Plugin”, можливим варіантом префіксу є “MFP-”.mfp_或myfirstplugin_Дотримання послідовності є надзвичайно важливим.
Чому обов’язково використовувати функцію `wp_enqueue_script` для додавання скриптів?
Використовуйтеwp_enqueue_script()和wp_enqueue_style()Це метод, рекомендований офіційною командою WordPress. Він правильно обробляє залежності скриптів (наприклад, від jQuery), запобігає їхньому багаторазовому завантаженню та дозволяє іншим плагінам чи темам взаємодіяти з цими скриптами.wp_deregister_script()Щоб безпечно видалити або замінити ваш скрипт, просто використовуйте відповідні інструменти чи команди.Якщо використовуватися вставлені теги, не можна скористатися цими перевагами управління, а також можуть виникнути конфлікти.
Які важливі правила безпеки під час розробки плагінів?
Головний принцип полягає у тому, що ніколи не слід довіряти даним, введеним користувачем. Потрібно ставитися до всього, що надходить від користувача, з підозрою.$_GET、$_POST、$_REQUESTАбо дані, отримані з бази даних, потрібно перевірити, очистити та ескапувати. Після цього їх використовують для формування HTML-коду.esc_html()、esc_attr()Виведіть цей текст для використання в URL-адресі.esc_url()У SQL-запитах обов’язково використовуйте…$wpdb->prepare()Виконуйте параметризовані запити для запобігання впровадженню шкідливого коду (SQL injection). Крім того, використовуйте механізми обмеження даних, які надаються користувачем, щоб уникнути можливих зловживань.current_user_can()Перевірити права користувача.
Як додати підтримку інтернаціоналізації до мого плагіна?
По-перше, необхідно правильно налаштувати інформацію у відповідному розділі заголовка плагіна.Text Domain和Domain PathПотім, у всіх місцях коду, де потрібно перекласти рядки, використовуйте…()Виконайте виведення._e()Виконати переклад у зворотному порядку (тобто перекласти текст з вихідної мови на початкову). Наприклад:( ‘Hello World’, ‘my-first-plugin’ )Наостанок, використовуйте інструменти на кшталт Poedit для сканування коду та генерації необхідних результатів..potШаблонні файли, створені для різних мов..po和.moПерекладений файл слід розмістити у відповідному місці./languagesУ каталозі.
Наступний крок, що робити далі?
Для подальшого читання та практичних знань
Наступні матеріали пов'язані з темою цієї статті і можуть бути корисними для подальшого вивчення. Зазвичай краще починати з статей, які найбільш тісно пов'язані з вашим поточною проблемою, а потім поступово переходити до суміжних тем.
- Детальний посібник з налаштування мережі багатьох сайтів у WordPress
- Легко створюйте професійні веб-сайти: Всебічний посібник від початківця до майстра з WordPress
- Повний посібник з WooCommerce: створення потужного інтернет-магазину на WordPress з нуля
- Практичний посібник з SEO-оптимізації для 2026 року: систематичні стратегії від початківців до професіоналів
- Посібник з основ WordPress: створення вашого першого професійного веб-сайту з нуля