Сила WordPress полягає не лише у його основних функціях, а й у можливості безмежного розширення за допомогою плагінів. Коли вам потрібно додати до сайту функцію, якої немає в існуючих плагінах, вивчення розробки плагінів стає надзвичайно важливим. Цей посібник проведе вас крок за кроком від основних концепцій до створення вашого першого повнофункціонального плагіна для WordPress, допомагаючи вам опанувати ключові навички кастомізованого розробництва.
Середовище розробки плагінів та його базова структура
Перш ніж почати писати код, вам знадобиться підходяще середовище для розробки та чітка структура проекту. Це не лише допоможе вам ефективно працювати, але й гарантуватиме, що плагін буде відповідати стандартам WordPress, що полегшить його подальше обслуговування та розповсюдження.
Налаштування локального середовища для розробки.
Рекомендується використовувати програмне забезпечення для локальних серверів, таке як XAMPP, MAMP або Local by Flywheel, для налаштування середовища роботи з WordPress. Це дозволяє вам безпечно проводити тести та налагодження на власному комп’ютері. Крім того, переконайтеся, що ваш редактор коду (наприклад, VS Code чи PhpStorm) підтримує підсвічування синтаксису PHP та підказки під час роботи з кодом – це значно підвищить ефективність розробки.
Рекомендуємо до прочитання. Посібник з розробки плагінів для WordPress: створіть свій перший розширення з нуля。
Розуміння основної структури плагіна
Найпростіший WordPress-плагін може містити лише один файл, але структурований плагін зазвичай складається з кількох каталогів та файлів. Основним файлом плагіна є головний файл (main file), який має містити певну коментарну рядок (plugin header), яка повідомляє системі WordPress про наявність плагіна.
Головні файли плагінів зазвичай називаються відповідно до їх функцій. Наприклад:my-custom-functionality.phpЙого верхня частина має містити стандартну заголовкову частину інформації про плагін.
<?php
/**
* Plugin Name: 我的定制功能模块
* Plugin URI: https://example.com/my-custom-plugin
* Description: 这是一个用于演示的WordPress定制功能插件。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-custom-plugin
*/ Цей коментар є джерелом інформації, яке визнається та відображається на сторінці “Плагіни” у бекенді WordPress.Text DomainВикористовується для інтернаціоналізації перекладів. Усі коди функцій мають бути написані в цьому файлі або в інших файлах, які імпортуються з цього файлу.
Основний розробничий процес: дії-хаки та фільтри
Архітектура плагінів WordPress ґрунтується на системі “хуків” (Hooks), яка є основою її розширюваності. Розуміння та вміле використання хуків є ключовим елементом розробки плагінів. Хуки поділяються на два основні типи: хуки дій (Action Hooks) та хуки фільтрів (Filter Hooks).
Використовуйте дії-хаки (action hooks) для додавання нових функцій.
Акційні хаки (action hooks) дозволяють вам “вставляти” та виконувати власні PHP-функції у певні моменти часу або при виникненні певних подій. Наприклад, ви можете виконати певну дію під час публікації статті або додати фрагмент власного коду у футер веб-сторінки.
Рекомендуємо до прочитання. Від нуля до одиниці: повний посібник із розробки плагінів для WordPress та кращі практики。
Ви можете використовувати ці можливості.add_action()Функція дозволяє прикріпити вашу власну функцію до певного хака (action hook). Наведений нижче приклад демонструє, як додати власне мета-вікно (meta box) на сторінці редагування статті у адміністративному інтерфейсі.
// 将函数挂载到‘add_meta_boxes’这个动作钩子
add_action( 'add_meta_boxes', 'mcp_add_custom_meta_box' );
function mcp_add_custom_meta_box() {
add_meta_box(
'mcp_custom_box_id', // 元框的唯一ID
'自定义设置', // 元框标题
'mcp_custom_meta_box_html', // 回调函数,用于输出HTML内容
'post', // 在‘文章’编辑页面显示
'side', // 显示在侧边栏
'high' // 优先级
);
}
// 定义输出元框HTML内容的回调函数
function mcp_custom_meta_box_html( $post ) {
// 获取已保存的值
$value = get_post_meta( $post->ID, '_mcp_custom_field', true );
// 输出一个非安全字段
echo '<label for="mcp_field">自定义字段:</label>';
echo '<input type="text" id="mcp_field" name="mcp_field" value="' . esc_attr( $value ) . '" />';
} Використання фільтрів та хуків для модифікації даних
Фільтр-хаки (filter hooks) дозволяють вам змінювати будь-які дані, які генерує WordPress під час обробки вмісту. На відміну від дій-хаків (action hooks), функції-фільтри мають отримувати певне значення та повинні повертати його у зміненому вигляді. Ви можете використовувати ці можливості для додadd_filter()Функція для додавання фільтрів.
Наприклад, для зміни кінцевої частини тексту статті можна автоматично додати розділ із заявою про авторські права:
add_filter( 'the_content', 'mcp_add_copyright_to_content' );
function mcp_add_copyright_to_content( $content ) {
// 仅对单篇文章页面生效
if ( is_single() ) {
$copyright_text = '<p><em>Усі права на цей текст належать цьому сайту. При перепублікації обов’язково вказуйте джерело.</em></p>';
$content .= $copyright_text;
}
// 必须返回修改后的内容
return $content;
} Реалізація системи керування даними плагінів
Плагіни зазвичай потребують зберігання, зчитування та оновлення даних. WordPress надає потужні API для налаштувань та метаданих статей, щоб безпечно виконувати ці операції, уникаючи прямого доступу до бази даних.
Використовуйте API з параметрами для зберігання налаштувань.
Для глобальних налаштувань плагінів (наприклад, ключів API, станів перемикачів тощо) слід використовувати API параметрів. Воно надає можливість керувати цими налаштуваннями ззовні програми.add_option(), get_option(), update_option()Функції, такі як `add`, `remove`, `get`, та інші, використовуються для керування даними, збереженими у вигляді пар ключ-значення.
Наприклад, створіть просте налаштування вимикача для плагіна.
Рекомендуємо до прочитання. Оволодіння розробкою плагінів для WordPress: створення вашого першого розширювального модуля з нуля。
// 在插件激活时设置一个默认选项(通常写在激活钩子函数里)
register_activation_hook( __FILE__, 'mcp_plugin_activate' );
function mcp_plugin_activate() {
if ( false === get_option( 'mcp_feature_enabled' ) ) {
add_option( 'mcp_feature_enabled', 'yes' );
}
}
// 在代码中获取这个选项的值
$is_enabled = get_option( 'mcp_feature_enabled', 'yes' ); // 第二个参数是默认值
if ( $is_enabled === 'yes' ) {
// 执行功能
} Зберігання та зчитування метаданих статей
Для роботи з даними, пов’язаними з певною статтею, сторінкою або власним типом статті (наприклад, з власними полями, як у прикладі з мета-боксами вище), необхідно використовувати API для метаданих статті (Post Meta). Ключовою функцією є…update_post_meta()和get_post_meta()。
Вам потрібно виконувати слухання (спостереження за певними подіями чи даними).save_postДля збереження даних, введених користувачем у фронтенд-формах, використовуються дії-хаки (action hooks). Під час збереження необхідно провести перевірку безпеки (перевірку значення поля Nonce) та перевірку прав доступу.
add_action( 'save_post', 'mcp_save_custom_field_data' );
function mcp_save_custom_field_data( $post_id ) {
// 检查Nonce字段(应在元框HTML中输出wp_nonce_field)
if ( ! isset( $_POST['mcp_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['mcp_meta_box_nonce'], 'mcp_save_data' ) ) {
return;
}
// 检查自动保存
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// 检查用户权限
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
// 安全地获取并保存字段数据
if ( isset( $_POST['mcp_field'] ) ) {
$my_data = sanitize_text_field( $_POST['mcp_field'] );
update_post_meta( $post_id, '_mcp_custom_field', $my_data );
}
} Створити сторінку керування плагінами
Для плагінів із складною функціональністю зазвичай потрібна окрема сторінка для налаштувань, щоб адміністратори веб-сайту могли налаштовувати різні параметри плагіна. WordPress надає розширену API для створення уніфікованих меню та сторінок керування.
Додати верхній меню керування
Використовуйтеadd_menu_page()Функція дозволяє додати до верхнього меню вашого плагіна елемент навігації у лівій частині бекенд-інтерфейсу. Вам потрібно вказати заголовок сторінки, назву меню, необхідні права доступу, псевдонім меню, а також функцію-коректор (callback), яка відповідає за відображення вмі
add_action( 'admin_menu', 'mcp_register_admin_menu' );
function mcp_register_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单名称
'manage_options', // 所需权限(通常为manage_options)
'mcp-plugin-settings', // 菜单别名(slug)
'mcp_render_settings_page', // 渲染页面的回调函数
'dashicons-admin-generic', // 图标(使用Dashicons)
80 // 菜单位置
);
}
// 定义渲染设置页面的函数
function mcp_render_settings_page() {
// 检查用户权限
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
// 输出设置字段、非安全字段等(需要配合settings API使用)
settings_fields( 'mcp_settings_group' );
do_settings_sections( 'mcp-plugin-settings' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="uk"/></form>
</div>
<?php
} Створення форм за допомогою API налаштувань
Для більш безпечного та стандартизованого оброблення параметрів форм рекомендується використовувати API налаштувань (Settings API) WordPress. Цей інструмент автоматично забезпечує перевірку значень типу Nonce, перевірку прав доступу, зберігання даних та відображення повідомлень про помилки. Основні кроки використання API налаштувань включають:register_setting()Реєстраційні налаштування, використанняadd_settings_section()Додайте область налаштувань та навчіть користувачів її використовувати.add_settings_field()Додайте конкретні поля для налаштувань.
Це гарантує, що сторінка налаштувань вашого плагіна буде відповідати стилю основної версії WordPress та дотримуватися найкращих практик безпеки.
підсумок
За допомогою цього посібника ви пройшли основний шлях розробки плагінів для WordPress: починаючи з налаштування середовища розробки та ознайомлення з базовою структурою системи, ви дізналися про суть її розширюваності – систему хуків (hooks), навчилися додавати чи змінювати функції за допомогою дій (actions) та фільтрів (filters). Потім ви опанували використання API для налаштувань плагінів (Options API) та API для метаданих статей (Article Metadata API) для безпечного управління даними плагінів. Нарешті, ви зрозуміли, як створити професійну та безпечну сторінку налаштувань плагіна.
Розробка плагінів – це процес, який вимагає багато практики; справжнє володіння цими навичками можна досягти лише шляхом безпосереднього їх застосування на практиці. Рекомендуємо почати з простого завдання, наприклад, додавання візитки автора після кожної статті, поступово застосовуючиОфіційний посібник з плагінів для WordPressЗа допомогою коду та відповідних джерел ви зможете створити потужні та елегантні користувацькі плагіни, які повністю розкриють потенціал WordPress.
Часті запитання
Які необхідні попередні знання для розробки плагінів для WordPress?
Вам потрібні базові знання програмування на PHP, розуміння HTML та CSS, а також початкове ознайомлення з основними концепціями WordPress (статті, сторінки, цикли, теги шаблонів). Знання об’єктно-орієнтованого програмування (OOP) не є обов’язковими, але вони дуже допоможуть під час створення складних плагінів.
Чи обов’язково головний файл плагіна має мати певну назву?
Жодних обов’язкових вимог немає, але для зрозумілості та стандартизації зазвичай рекомендується використовувати назви, які описують функції плагіна. Наприклад:my-gallery-plugin.phpЄдина вимога полягає у тому, що на початку файлу має бути правильна коментарна рядка з інформацією про плагін. WordPress використовує цю коментарну рядку для ідентифікації плагіна.
Як гарантувати, що мій плагін не буде конфліктувати з іншими плагінами?
Додавання унікальних префіксів до всіх ваших функцій, класів, констант та імен параметрів є найкращою практикою для запобігання конфліктам. Наприклад, не використовуйте…get_data()Такі універсальні назви функцій краще не використовувати.mcp_get_data()(Припустимо, що скорочення вашого плагіна – mcp). Так само, назви опцій мають бути схожими.mcp_settings_array。
Після завершення розробки, як розповсюдити плагін для використання іншими особами?
Закомпресуйте ваш папку з плагінами у ZIP-файл. Користувачі зможуть безпосередньо завантажити та встановити цей ZIP-файл на сторінці “Плагіни” → “Встановити плагін” → “Завантажити плагін” у менеджері плагінів WordPress. Якщо ви бажаєте опублікувати свій плагін у офіційному каталозі плагінів WordPress, вам доведеться дотримуватися більш суворих вимог.Посібник з подання заявокА також піддається кодовому рецензуванню.
Якій підходу до розробки плагінів я повинен віддати перевагу – процесуальному чи об’єктному?
Для простих, невеликих плагінів процедурний підхід (використання окремих функцій) є більш прямим та швидким способом реалізації. Для середніх та великих плагінів із складними функціями об’єктний підхід (використання класів) дозволяє краще організувати код, підвищити його зберігання та повторне використання. Обидва підходи широко прийняті в спільноті WordPress.
Наступний крок, що робити далі?
Для подальшого читання та практичних знань
Наступні матеріали пов'язані з темою цієї статті і можуть бути корисними для подальшого вивчення. Зазвичай краще починати з статей, які найбільш тісно пов'язані з вашим поточною проблемою, а потім поступово переходити до суміжних тем.
- Посібник з розробки плагінів для WordPress: створіть свій перший власний плагін з нуля
- Як стати розробником плагінів для WordPress: повний посібник від нуля
- Повний посібник з розробки плагінів для WordPress: від початківців до майстрів – створення професійних розширень
- Розробка плагінів для WordPress від початківця до майстра: створення вашого першого власного плагіна
- Від нуля до одного: Повний посібник з поступового розробки вашого першого плагіна для WordPress