Подготовка и настройка окружения
Прежде чем начинать писать код, вам понадобится подходящая среда разработки. К ней относятся локальная установка 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.
Реализация простой функции, представленной в виде короткого кода
Краткие коды (shortcodes) – это мощный инструмент, позволяющий пользователям легко вставлять функции плагинов в статьи или страницы. Давайте реализуем простой краткий код, который отображает приветствие на странице.
В вашем главном файле… 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 Крючки регистрируются и настраиваются во время инициализации системы администратором.
// 初始化插件设置
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-функции), необходимые для отображения интерфейса:
// 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 на стороне клиента… 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’) Создание строки… .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 – это сделает ваш плагин еще мощнее.
Часто задаваемые вопросы
Для разработки плагинов обязательно необходимо использовать объектно-ориентированное программирование?
Не обязательно. Для простых плагинов использование процедурного программирования (набора функций) вполне возможно и даже более просто и понятно в реализации. Однако для средних и крупных, сложных плагинов применение объектно-ориентированного программирования (ООП) и классовой структуры позволяет лучше организовать код, обеспечить его модульность и повторное использование, а также снизить риск возникновения конфликтов в именах элементов кода. Поэтому такой подход рекомендуется.
Как отладить проблемы в плагинах для WordPress?
Прежде всего, убедитесь, что в wp-config.php Файл открыт в приложении WP_DEBUG и WP_DEBUG_LOG Используйте константы; так информация об ошибках будет правильно сохранена. /wp-content/debug.log Эти данные хранятся в файле, но не отображаются пользователю. Кроме того, их можно использовать в нужных целях. error_log() Функция выводит значения переменных в логи. Для работы с Ajax или сложными логическими алгоритмами панели “Сеть” (Network) и “Консоль” (Console) в разработческих инструментах браузера являются неотъемлемыми инструментами для отладки.
Как мой плагин совместим с темами и другими плагинами?
Лучшая практика соблюдения совместимости с системой WordPress заключается в следующем: строго соблюдении официального API и стандартов кодирования WordPress; присвоении уникальных префиксов именам ваших функций, классов и хуков (action hooks). mfp_Чтобы избежать конфликтов, перед использованием любых глобальных переменных или функций необходимо проверить их наличие (используйте соответствующие проверочные механизмы). function_exists() или class_exists()Кроме того, необходимо четко описать в документации таблицы базы данных, созданные вашим плагином.选项или 用户元数据。
Какие требования предъявляются к плагинам, предназначенным для загрузки в каталог WordPress.org?
Вам необходимо иметь аккаунт на WordPress.org и убедиться, что плагин полностью соответствует официальным требованиям. Это включает в себя: код, совместимый с лицензией GPL (обычно это GPLv2+); плагин должен быть полностью открытым и не зависеть от внешних платных сервисов для выполнения основных функций; содержать стандартные форматы. readme.txt В файле и коде нет вредоносного или нежелательного содержимого; кроме того, материал прошел проверку команды по ручному аудиту. Перед отправкой обязательно тщательно ознакомьтесь с официальным руководством по разработке плагинов и руководством по подаче заявок.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- Полное руководство по разработке плагинов для WordPress: от основ до мастерства создания профессиональных расширений
- Разработка плагинов для WordPress: от основ до мастерства: создание вашего первого пользовательского плагина
- От нуля до единицы: Полное руководство по постепенному созданию вашего первого плагина для WordPress