Підготовчі роботи та налаштування середовища
Перш ніж почати писати код, вам знадобиться відповідне середовище для розробки. До нього належать локальна інсталяція WordPress, кодовий редактор та базові знання мови PHP. Для локального розробництва рекомендується використовувати такі інструменти, як XAMPP, MAMP чи Local by Flywheel – вони дозволяють швидко налаштувати на вашому комп’ютері серверне середовище, яке включає в себе PHP та MySQL.
Створення базового каталогу та файлів для плагіна
Кожен плагін для WordPress має мати головний файл, який є входною точкою для роботи плагіна. Спочатку вам потрібно… wp-content/plugins Створіть нову папку у каталозі, наприклад… my-first-pluginПотім створіть у цьому папці головний PHP-файл, який зазвичай має ту саму назву, що й папка. my-first-plugin.php。
На початку цього основного файлу обов’язково має бути присутня стандартна заголовкова коментаря з інформацією про плагін. WordPress використовує цю інформацію для ідентифікації та відображення вашого плагіна у інтерфейсі адміністрування.
Рекомендуємо до прочитання. Від нуля до одного: покроково навчимо вас основним навичкам розробки плагінів для WordPress。
<?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
Функціональний плагін зазвичай складається з кількох файлів. Окрім основного файлу, можуть існувати файли JavaScript, CSS, зображення та інші ресурсні файли, а також мовні файли для підтримки інтернаціоналізації. Раціональна структура каталогів допомагає організувати та підтримувати код.
Рекомендована структура виглядає наступним чином:
- my-first-plugin/ (Кореневий каталог плагіна)
- my-first-plugin.php (Головний файл)
- includes/ (Файли, що містять класи чи функції, виконуючі основні функції програми)
- admin/ (Код, пов’язаний з інтерфейсом адміністративного керування в бекенді)
- public/ (Місце для зберігання коду, пов’язаного з переднім кінцем веб-додатку)
- assets/ (Місце для зберігання ресурсів: CSS, JavaScript, зображень тощо)
- languages/ (Місце зберігання файлів з міжнародними перекладами)
Розробка основного коду на PHP
Уся логіка функцій плагіна реалізована за допомогою коду на PHP. WordPress надає велику кількість можливостей для розширення функціоналу сайту за допомогою плагінів.动作钩子和过滤器钩子Це основа взаємодії плагінів із ядром системи WordPress.
Реалізуємо просту функцію короткого коду.
Короткі коди – це потужні інструменти, які дозволяють користувачам легко вбудовувати функції плагінів у статті чи сторінки. Ми створимо простий короткий код, який відображатиме привітання на сторінці.
У вашому головному файлі… my-first-plugin.php Під заголовковими коментарями додайте наступні функції та хаки:
Рекомендуємо до прочитання. Детальний аналіз розробки плагінів для WordPress: створення вашого першого функціонального розширення від нуля до одного.。
// 注册短代码
function mfp_greeting_shortcode( $atts ) {
// 使用 shortcode_atts 设置默认参数并合并用户传入的参数
$atts = shortcode_atts( array(
'name' => '访客',
), $atts, 'mfp_greeting' );
// 返回要显示的内容
return '<p>Привіт, '. esc_html($atts['name'])'. ‘! Ласкаво просимо до використання мого першого плагіна.</p>'add_shortcode( 'mfp_greeting', 'mfp_greeting_shortcode' ); Зараз користувачі можуть вводити текст у редакторі статей. [mfp_greeting name=“小明”]На передньому екрані буде відображено: “Привіт, Сяомін! Ласкаво просимо до використання мого першого плагіна.”
Додайте один параметр налаштувань до бекенду.
Щоб функції плагіна були налаштовувані, зазвичай необхідно додати сторінку з налаштуваннями. Тут показано, як додати підменю до меню “Налаштування”.
Спочатку ми використовуємо… add_action Хвилі („hooks“) реєструються під час ініціалізації системи адміністратором.
// 初始化插件设置
function mfp_settings_init() {
// 注册一个新的设置 section
add_settings_section(
'mfp_settings_section', // section ID
'我的插件设置', // 标题
'mfp_settings_section_callback', // 回调函数,用于输出 section 描述
'general' // 显示在哪个设置页,这里是“常规”设置页
);
// 在 section 内注册一个字段
add_settings_field(
'mfp_default_greeting', // 字段 ID
'默认问候人名', // 字段标题
'mfp_default_greeting_callback', // 渲染字段输入框的回调函数
'general', // 设置页面
'mfp_settings_section' // 所属 section
);
// 在 WordPress 的 `option` 表中注册这个设置
register_setting( 'general', 'mfp_default_greeting' );
}
add_action( 'admin_init', 'mfp_settings_init' ); Потім визначте дві використані вище функції-повернення (callback functions), які будуть використовуватися для рендерингу інтерфейсу:
// Section 描述的回调函数
function mfp_settings_section_callback() {
echo '<p>Тут я налаштовую параметри свого першого плагіна.</p>';
}
// 字段输入框的回调函数
function mfp_default_greeting_callback() {
// 从数据库获取已保存的值,如果没有则使用默认值
$option = get_option( 'mfp_default_greeting', 'WordPress 用户' );
// 输出一个输入框
echo '<input type="text" name="mfp_default_greeting" value="' . esc_attr( $option ) . '" />';
} Зараз ви можете побачити цей параметр налаштування внизу сторінки “Налаштування -> Загальні” у панелі керування WordPress.
Управління ресурсами фронтенду та взаємодія з Ajax
Сучасні плагіни зазвичай потребують власних стилів та логіки взаємодії з користувачем. WordPress надає стандартні способи для безпечного реєстрації та завантаження файлів CSS та JavaScript.
Рекомендуємо до прочитання. Початок з нуля: чому варто обирати розробку плагінів для WordPress?。
Безпечне завантаження CSS та JavaScript
Ніколи не виконуйте прямі операції у ваших PHP-файлах. <link> 或 <script> Ресурсні шляхи мають бути закодовані явно (в коді). Краще використовувати такий підхід. wp_enqueue_style 和 wp_enqueue_script Функція.
// 注册并加载前端资源
function mfp_enqueue_public_assets() {
// 加载一个 CSS 文件
wp_enqueue_style(
'mfp-public-style', // 样式表句柄
plugin_dir_url( __FILE__ ) . 'assets/css/public-style.css', // 样式表 URL
array(), // 依赖项
'1.0.0' // 版本号,可用于清除缓存
);
// 加载一个 JavaScript 文件
wp_enqueue_script(
'mfp-public-script', // 脚本句柄
plugin_dir_url( __FILE__ ) . 'assets/js/public-script.js', // 脚本 URL
array( 'jquery' ), // 依赖项,这里依赖 jQuery
'1.0.0',
true // 是否在页面底部加载
);
// 重要:将 PHP 变量安全地传递到 JavaScript
wp_localize_script(
'mfp-public-script',
'mfp_ajax_object', // 在 JS 中访问的对象名
array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'mfp_ajax_nonce' ),
'default_name' => get_option( 'mfp_default_greeting', 'WordPress 用户' )
)
);
}
// 在前端页面加载资源
add_action( 'wp_enqueue_scripts', 'mfp_enqueue_public_assets' );
// 在后台管理页面加载资源(如果需要)
// add_action( 'admin_enqueue_scripts', 'mfp_enqueue_admin_assets' ); Реалізація простого Ajax-запиту
Ajax дозволяє взаємодіяти з сервером без перезавантаження сторінки. У WordPress є вбудований обробник Ajax-запитів.
По-перше, у файлі JavaScript на передньому кінці (frontend)… public-script.js Надсилається запит:
jQuery(document).ready(function($) {
$('#my-button').on('click', function(e) {
e.preventDefault();
$.post(
mfp_ajax_object.ajax_url, // WordPress 提供的 Ajax URL
{
action: 'mfp_get_server_time', // 触发的 PHP 钩子标识
nonce: mfp_ajax_object.nonce, // 安全随机数
},
function(response) {
if (response.success) {
$('#result-container').html('服务器时间:' + response.data);
} else {
alert('请求失败:' + response.data);
}
}
);
});
}); Потім на стороні PHP обробляється цей запит. Необхідно створити функції обробки реєстрації окремо для зареєстрованих користувачів та незареєстрованих користувачів (або для обох груп одночасно).
// 处理 Ajax 请求的函数
function mfp_ajax_get_server_time() {
// 验证 nonce,防止 CSRF 攻击
check_ajax_referer( 'mfp_ajax_nonce', 'nonce' );
// 处理逻辑
$server_time = current_time( 'mysql' );
// 返回成功响应(JSON 格式)
wp_send_json_success( $server_time );
}
// 为登录用户注册处理函数
add_action( 'wp_ajax_mfp_get_server_time', 'mfp_ajax_get_server_time' );
// 为未登录用户注册处理函数(如果功能允许)
add_action( 'wp_ajax_nopriv_mfp_get_server_time', 'mfp_ajax_get_server_time' ); Інтернаціоналізація плагінів та підготовка до їх публікації
Щоб ваш плагін міг використовуватися користувачами WordPress по всьому світу, інтернаціоналізація (i18n) є обов’язковим кроком. Крім того, ретельні тести та оптимізація перед публікацією також мають вирішальне значення.
Використання функції gettext для реалізації перекладу тексту
WordPress використовує фреймворк GNU gettext для перекладу. Вам потрібно обгорнути всі текстові елементи, призначені для користувачів, певними функціями.
Змініть попередню коротку функцію коду, щоб вона підтримувала переклад:
function mfp_greeting_shortcode_i18n( $atts ) {
$atts = shortcode_atts( array(
'name' => __( '访客', 'my-first-plugin' ), // 默认值也可翻译
), $atts, 'mfp_greeting' );
// 使用 sprintf 和 __ 函数组合翻译字符串
return '<p>' . sprintf( __( '你好,%s!欢迎使用我的第一个插件。', 'my-first-plugin' ), esc_html( $atts['name'] ) ) . '</p>'add_shortcode( 'mfp_greeting', 'mfp_greeting_shortcode_i18n' ); Вам потрібно використовувати такі інструменти, як Poedit, щоб сканувати всі елементи коду у плагіні, які схожі на… __(‘文本’, ‘my-first-plugin’) Стрінг, який містить символи ‘%s’, ‘%1$s’, ‘{{var}}’, ‘:name’, URL-адреси, числа, знаки пунктуації та рядкові перерви, потрібно обробити для отримання готового результату. .pot Шаблонний файл, а потім для кожної мови (наприклад, китайської) створюється відповідний варіант цього файлу. .po І після компіляції .mo Файл, і покладіть його туди. /languages Зміст.
Провести фінальні тести та виконати очищення коду.
Перед публікацією плагіна обов’язково проведіть наступні перевірки:
1. Функціональне тестування: Активуйте плагін на абсолютно новій версії WordPress та переконайтеся, що всі функції (шорткоди, налаштування, Ajax тощо) працюють так, як очікується.
2. Перевірка коду: переконатися, що для всіх даних, введених користувачем, були застосовані відповідні правила обробки. esc_html, esc_attr, wp_kses_post Функції для безпечного ескапулювання даних мають використовуватися під час всіх запитів до баз даних. $wpdb Класи містять запобіжні заходи (фрази підготовки даних) для запобігання виконанню зловмисних запитів типу SQL-ін’єкції.
3. Перевірка продуктивності: переконайтеся, що скрипти та стилі завантажуються лише на потрібних сторінках (для цього можна використовувати умовні теги, такі як…) is_admin(), is_single() Необхідно уникати виконання непотрібних запитів до бази даних при кожному завантаженні сторінки.
4. Очищення файлів: видаліть код для налагодження, непотрібні коментарі та невикористовувані файли, які були створені під час процесу розробки.
5. Файл README: створіть детальний опис проекту readme.txt Файл має відповідати вимогам сайту WordPress.org; він має містити опис плагіна, інструкції з встановлення, поширені запитання та іншу корисну інформацію. Цей файл є обов’язковим для подання плагіна до офіційного каталогу WordPress.
підсумок
За допомогою цього посібника ви пройшли шлях від створення порожнього файлу до розробки повноцінного WordPress-плагіна, який підтримує короткі коди, налаштування на серверному рівні, завантаження фронтенд-ресурсів, Ajax-інтеракції та міжнародну локалізацію. Основні кроки включають: налаштування середовища розробки та створення головного файлу зі стандартними заголовками; використання дій-хуків (action hooks) та фільтрів-хуків (filter hooks) для додавання нових функцій; безпечне управління ресурсними файлами; реалізацію асинхронного зв’язку між фронтендом та сервером; а також підготовку до публікації плагіна у різних мовних версіях шляхом перекладу та тестування. Пам’ятайте, що безпека (еквівалізація даних, перевірка вхідних даних, використання токенів типу nonce), продуктивність (завантаження ресурсів за потребою) та дотримання стандартів (відповідно до правил кодування WordPress) є трьома ключовими аспектами розробки якісних плагінів. Постійне вивчення та практика роботи з більш складними API-системами, такими як користувацькі типи статей, REST API та редактори типу Blocks, зробить ваш плагін ще потужнішим.
Часті запитання
Чи обов’язково для розробки плагінів використовувати об’єктно-орієнтоване програмування?
Не обов’язково. Для простих плагінів використання процедурного програмування (набору функцій) є цілком можливим та простішим у використанні. Однак для середніх та великих, складних плагінів використання об’єктно-орієнтованого програмування (OOP) та класової структури дозволяє краще організувати код, забезпечити інкапсуляцію та повторне використання елементів коду, а також зменшити кількість конфліктів у назв
Як налагодити проблеми в плагінах WordPress?
Насамперед, переконайтеся, що в wp-config.php Файл увімкнений. WP_DEBUG 和 WP_DEBUG_LOG Константа; таким чином повідомлення про помилки будуть записуватися. /wp-content/debug.log У файлі ця інформація зберігається, але не відображається користувачеві. Крім того, можна використовувати… error_log() Функція виводить значення змінних у журнал подій. Для роботи з Ajax або складною логікою панелі “Мережа” та “Консоль” у інструментах розробки браузера є незамінними інструментами для налагодження.
Як мій плагін може працювати сумісно з темами та іншими плагінами?
Найкраща практика підтримки сумісності полягає у суворому дотриманні офіційного API та стандартів кодування WordPress; також до назв ваших функцій, класів та дій-хуків слід додавати унікальні префікси. mfp_Це робиться для уникнення конфліктів під час використання глобальних змінних чи функцій. Перед їх використанням необхідно перевірити, чи вони вже існують (за допомогою відповідних механізмів). function_exists() 或 class_exists()Ви також повинні чітко пояснити у документації, які таблиці бази даних створює ваш плагін, а також їх структуру та функціонал.选项或 用户元数据。
Які умови необхідні для подання плагінів до каталогу WordPress.org?
Вам потрібно мати обліковий запис на WordPress.org і переконатися, що плагін повністю відповідає офіційним вимогам. Це включає: код, сумісний з ліцензією GPL (зазвичай GPLv2+); плагін має бути 100% відкритим і не залежати від сторонніх платних послуг для виконання основних функцій; включати стандартні формати. readme.txt У файлі та коді немає шкідливого чи небажаного контенту; крім того, вони пройшли перевірку командою людського контролю. Перед поданням обов’язково уважно прочитайте офіційний посібник з розробки плагінів та інструкції щодо їх
Наступний крок, що робити далі?
Для подальшого читання та практичних знань
Наступні матеріали пов'язані з темою цієї статті і можуть бути корисними для подальшого вивчення. Зазвичай краще починати з статей, які найбільш тісно пов'язані з вашим поточною проблемою, а потім поступово переходити до суміжних тем.
- Посібник з розробки плагінів для WordPress: створіть свій перший власний плагін з нуля
- Як стати розробником плагінів для WordPress: повний посібник від нуля
- Повний посібник з розробки плагінів для WordPress: від початківців до майстрів – створення професійних розширень
- Розробка плагінів для WordPress від початківця до майстра: створення вашого першого власного плагіна
- Від нуля до одного: Повний посібник з поступового розробки вашого першого плагіна для WordPress