Навіщо вивчати розробку плагінів для WordPress?
WordPress, як найпопулярніша у світі система керування контентом, завдяки своїй високій розширюваності значною мірою залежить від великої кількості плагінів. Вивчення розробки плагінів дозволяє не лише налаштовувати функції системи відповідно до власних потреб, а й глибоко зрозуміти її основну архітектуру, підвищити свої технічні навички та навіть реалізувати власні ідеї у вигляді готових до публікації продуктів. Розробляючи плагіни самостійно, ви можете контролювати якість коду, забезпечувати безпеку веб-сайту та уникати проблем зі сумісністю, які можуть виникнути внаслідок використання сторон
Базовий плагін для WordPress по суті є одним або кількома PHP-файлами, розташованими у певному каталозі. Він взаємодіє з основною системою WordPress за допомогою розширеної API (Application Programming Interface), яка включає такі механізми, як хаки дій (action hooks), хаки фільтрів (filter hooks), короткі коди (shortcodes) та інші інструменти. Розуміння цього механізму є передумовою для успішного розроблення будь-якого плагіна.
Підготовка середовища розробки та базової інфраструктури
Перш ніж почати писати код, дуже важливо створити належне середовище для розробки. Вам знадобиться локальне серверне середовище (наприклад, XAMPP, Local by Flywheel або DevKinsta), текстовий редактор (наприклад, VS Code або PhpStorm), а також встановлена версія WordPress для тестування.
Рекомендуємо до прочитання. Кінцевий посібник із розробки плагінів для WordPress: вивчення основних принципів і практичних проектів.。
Вхід до плагіна знаходиться у головному PHP-файлі. Коментарі на початку цього файлу є ключовими для того, щоб WordPress ідентифікував плагін. Спочатку ми створимо базову структуру плагіна.
Створення основного файлу плагіна
Головний файл плагіна зазвичай називається так само, як і сам плагін. Наприклад, якщо ми створюємо плагін під назвою “Мій перший плагін”, його головний файл може називатися „my_first_plugin.js“.my-first-plugin.phpЦей файл має бути розміщений у певному місці./wp-content/plugins/my-first-plugin/У каталозі.
В заголовку файлу мають бути включені стандартні коментарі з інформацією про плагін. Ось найпростіший приклад:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习WordPress插件开发的功能插件示例。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Після збереження цього файлу перейдіть на сторінку “Плагіни” у веб-адмініструванні WordPress. Ви повинні побачити цей новий плагін у списку плагінів та зможете його активувати. Наразі він не має жодних функцій, але базова структура вже побудована.
Створення базової структури каталогу плагінів
Плагін із чіткою структурою полегшує довгострокове обслуговування. Рекомендується створити наступні каталоги:
* /assets/Використовується для зберігання статичних ресурсів, таких як CSS, JavaScript та зображення.
* /includes/Для зберігання основних файлів класів та функцій PHP.
* /languages/Використовується для зберігання файлів із міжнародними перекладами (.po/.mo).
Рекомендуємо до прочитання. Суть принципів роботи Tailwind CSS: розкриття механізмів функціонування цієї практичної та атомізованої CSS-фреймворк-системи。
Головний файлmy-first-plugin.phpВін має відповідати лише за ініціалізацію плагіна, наприклад, за визначення констант, завантаження інших файлів, реєстрацію хуків тощо.
Реалізація основних функцій: створення меню та сторінок для керування
Однією з поширених функцій плагінів є можливість додати сторінку меню для керування у фоновому режимі WordPress. Ми реалізуємо це за допомогою API сторінок меню WordPress.
Додайте топовий меню на задньому плані (у бекенді).
Нам потрібно використати…add_menu_page()Функція. Ця функція зазвичай використовується…admin_menuЦей хук дій виконується під час його активації. Додайте наступний код у головний файл:
// 定义在管理员菜单初始化时执行的功能
function mfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单slug
'mfp_display_settings_page', // 用于显示页面内容的回调函数
'dashicons-admin-generic', // 菜单图标(Dashicon)
6 // 菜单位置
);
}
// 将函数挂载到 `admin_menu` 钩子上
add_action('admin_menu', 'mfp_add_admin_menu'); Створення вмісту, який відображатиметься на сторінці налаштувань
У наведеному вище коді…mfp_display_settings_pageЦе функція-колбек, яка відповідає за виведення HTML-контенту сторінки налаштувань. Нам потрібно визначити цю функцію:
// 设置页面的显示内容
function mfp_display_settings_page() {
// 检查用户权限
if (!current_user_can('manage_options')) {
wp_die(__('你没有权限访问此页面。'));
}
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ?></h1>
<form action="/uk/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段和安全nonce字段
settings_fields('mfp_options_group'); // 设置组的名称
do_settings_sections('my-first-plugin'); // 页面slug
submit_button('保存设置');
?>
<input type="hidden" name="trp-form-language" value="uk"/></form>
</div>
<?php
} Цей код створює стандартну структуру сторінки налаштувань для WordPress, у якій використовуються певні елементи інтерфейсу.settings_fields()和do_settings_sections()Це означає, що ми будемо використовувати API налаштувань WordPress для керування нашими параметрами. Це найбезпечніший та найстандартніший спосіб.
Використовуйте API Settings для керування параметрами плагінів.
Обробляти безпосередньо$_POSTІснують ризики для безпеки даних. API WordPress Settings допомагає нам забезпечити їх перевірку, захист та зберігання, що робить його ідеальним варіантом для налаштування плагінів.
Рекомендуємо до прочитання. Посібник з використання плагінів для системи WooCommerce: створення професійного власного інтернет-магазину для міжнародної торгівлі з нуля。
Налаштування реєстрації, поля та розділи
Нам потрібно…admin_initІніціалізуйте наші налаштування у функції-хвилі (hook). Спочатку використовуйте…register_setting()Зареєструйте один параметр налаштувань.
function mfp_register_settings() {
// 注册一个设置:`mfp_options` 是存储在`wp_options`表中的键名
register_setting(
'mfp_options_group', // 设置组名,需与`settings_fields()`参数一致
'mfp_options', // 选项名
'mfp_sanitize_options' // 可选:数据清洗回调函数
);
// 添加一个设置章节
add_settings_section(
'mfp_main_section', // 章节ID
'主要设置', // 章节标题
'mfp_main_section_callback', // 章节介绍的回调函数
'my-first-plugin' // 所属页面slug
);
// 在章节中添加一个文本字段
add_settings_field(
'mfp_text_field', // 字段ID
'示例文本', // 字段标签
'mfp_text_field_callback', // 用于渲染字段HTML的回调函数
'my-first-plugin', // 所属页面slug
'mfp_main_section' // 所属章节ID
);
}
add_action('admin_init', 'mfp_register_settings'); Функції для рендерингу та очищення даних полів
Зараз нам потрібно визначити всі використані вище функції-повернення (callback functions), які використовуються для формування HTML-коду відповідних полів та очищення даних.
// 主章节的描述文本
function mfp_main_section_callback() {
echo '<p>Ось основна зона налаштувань плагіна.</p>';
}
// 文本字段的HTML输出
function mfp_text_field_callback() {
// 从数据库获取现有值
$options = get_option('mfp_options');
$value = $options['mfp_text_field'] ?? ''; // PHP 7.0+ 空合并运算符
echo '<input type="text" name="mfp_options[mfp_text_field]" value="' . esc_attr($value) . '" class="regular-text">';
}
// 数据清洗函数(可选但推荐)
function mfp_sanitize_options($input) {
$sanitized_input = [];
if (isset($input['mfp_text_field'])) {
// 对文本字段进行基本的清洗,如去除标签
$sanitized_input['mfp_text_field'] = sanitize_text_field($input['mfp_text_field']);
}
return $sanitized_input;
} На цьому етапі плагін із повним набором функцій, включаючи сторінку налаштувань безпеки, готовий до використання. Після активації плагіна ви зможете побачити меню “Мої плагіни” у панелі керування WordPress; натиснувши на нього, ви зможете налаштувати та зберегти потрібні параметри. Усі дані безпечно зберігаються за допомогою API WordPress.wp_optionsУ таблиці.
Додайте фронтенд-функції до плагіна: створіть короткий код для виконання певних дій.
Функції, які виконуються на серверній стороні (в бекенді), є основою для роботи веб-сайту, але плагіни також часто мають вплив на його передній інтерфейс (фронтенд). Створення скорочених кодів (shortcodes) є чудовим способом реалізації функцій плагін
Зареєструйте простий короткий код.
Ми зареєструємо один проект під назвою…[my_greeting]Це короткий код, який використовується для відображення привітання на передньому кінці (фронтенді) сайту.add_shortcode()Функція.
Додайте цей код у головний файл або у спеціальний файл, який відповідає за виконання певної функції.
// 注册短代码
function mfp_greeting_shortcode($atts, $content = null) {
// 使用shortcode_atts设置默认属性并合并用户输入
$atts = shortcode_atts(
array(
'name' => '访客', // 默认值
),
$atts,
'my_greeting' // 短代码名称
);
// 获取插件选项中存储的文本
$options = get_option('mfp_options');
$custom_text = $options['mfp_text_field'] ?? '';
// 构造输出
$output = '<div class="mfp-greeting">'$output .= '<p>Привіт, '. esc_html($atts['name']) . '! Ласкаво просимо на наш сайт.</p>';
if (!empty($custom_text)) {
$output .= '<p><strong>Користувацьке повідомлення:</strong>'. esc_html($custom_text)'.'</p>'$output = '</div>';
// 返回输出内容,而不是直接echo
return $output;
}
add_shortcode('my_greeting', 'mfp_greeting_shortcode'); Зараз користувачі можуть вводити текст у редакторі статей.[my_greeting name="张三"]На фронтенді відображається персоналізоване привітання, а якщо на бекенді встановлений “прикладний текст”, він також показується разом із привітанням. Такий підхід ефективно поєднує налаштування бекенду з відображенням інформації на фронтенді.
підсумок
Завдяки виконанню вищезазначених кроків ми створили WordPress-плагін із повним набором функцій. Ми почали з нуля, створивши базові файли та структуру плагіна, використовуючи…add_menu_page()За допомогою API налаштувань була створена безпечна сторінка для керування параметрами системи, яка доступна з бекенду.add_shortcode()Було реалізовано виведення функціоналу на передньому кінці (фронтенді). Цей процес охоплює основні етапи розробки плагінів: планування, ініціалізацію, інтеграцію з бекенд-API, обробку даних та надання інтерф
Після того, як ви добре опануєте ці основні знання, ви зможете продовжити досліджувати більш складні теми, такі як створення власних типів статей, метаданих (Meta Box), власних таблиць баз даних, REST API-пунктів доступу, обробка даних за допомогою AJAX, а також інтернаціоналізація плагінів. Пам’ятайте, що дотримання стандартів кодування та найкращих практик WordPress є ключовим для розробки якісних та легко підтримуваних плагінів.
Часті запитання
Які знань PHP необхідно володіти для розробки плагінів?
Необхідно володіти базовою граматикою PHP, включаючи змінні, масиви, функції, умовні оператори та цикли. Знання об’єктно-орієнтованого програмування (OOP) дуже корисні для створення середніх та великих плагінів. Крім того, важливо розуміти, як WordPress завантажує плагіни, а також як безпечно використовувати глобальні змінні та функції.
Як налаштувати та виправити плагін для WordPress, який ви самі розробили?
Насамперед, переконайтеся, що вwp-config.phpФайл увімкнений.WP_DEBUG和WP_DEBUG_LOGТаким чином, повідомлення про помилки будуть зареєстровані у файлі журналу. Крім того, можна використовувати…error_log()Функції виводять інформацію для налагодження. Для складної логіки можна використовувати професійні інструменти налагодження, такі як Xdebug, щоб поетапно виконувати код.
Як забезпечити безпеку плагіна під час його розробки?
Завжди перевіряйте та очищуйте дані, введені користувачем. Використовуйте вбудовані функції WordPress для цього.esc_html(), esc_attr(), sanitize_text_field()和wp_kses()Обробіть результат вихідних даних, використовуючи методи, що не базуються на технології CE (Common Encoding).wp_nonce_field()Це робиться для запобігання фальсифікації крос-сайтових запитів (CSRF – Cross-Site Request Forgery). Для операцій з базою даних використовується…$wpdbМетоди, які надаються класом, або їх використанняprepare()Розроблені спеціальні заходи для запобігання використанню зловмисних кодів у SQL-запитах (SQL-ін’єкціям).
Чи слід розміщувати плагіни на локальному комп’ютері, чи на онлайн-сервері під час їх розробки?
Щиро рекомендуємо виконувати основну роботу з розробки у локальному середовищі (наприклад, Local, XAMPP). Локальне середовище має високу швидкість відповіді, не залежить від мережі, і дозволяє безпечно тестувати нові функції без ризиків для онлайн-сайту. Після того, як основні функції будуть реалізовані, їх слід розгорнути у тестовому онлайн-середовищі для перевірки насиченої сум
Як опублікувати власний плагін у офіційному каталозі WordPress?
Вам потрібно зайти на сайт WordPress.org, зареєструвати обліковий запис розробника та відправити код вашого плагіна через систему контролю версій Subversion (SVN). Плагін має відповідати офіційним стандартам кодування та вимогам до структури каталогів; крім того, він має містити всі необхідні файли та дані.readme.txtПісля схвалення файлу користувачі по всьому світу зможуть безпосередньо шукати та встановлювати ваш плагін у фоновому режимі.
Наступний крок, що робити далі?
Для подальшого читання та практичних знань
Наступні матеріали пов'язані з темою цієї статті і можуть бути корисними для подальшого вивчення. Зазвичай краще починати з статей, які найбільш тісно пов'язані з вашим поточною проблемою, а потім поступово переходити до суміжних тем.
- Чому варто обрати WordPress: десять основних переваг цього відкритого системного менеджера контенту (CMS)?
- Освоїть WooCommerce за десять хвилин: посібник зі створення та управління інтернет-магазином від початківців до отримання прибутку
- Повний посібник з WooCommerce: від встановлення до запуску – покроковий курс налаштування просунутої електронної комерції
- Що таке WordPress? Огляд комплексної системи управління контентом
- Детальний аналіз процесу створення веб-сайтів: від нуля до створення високопродуктивного корпоративного сайту