Подготовка среды для разработки плагинов для WordPress
Прежде чем начать писать код, важно создать подходящую среду разработки. Она не только позволит вам работать эффективно, но и поможет симулировать реальные условия работы в производственной среде, избегая проблем, связанных с несоответствием между локальной и онлайн-версиями программы. Типичная среда разработки должна включать в себя локальный сервер, текстовый редактор и инструменты для отладки кода.
Во-первых, вам понадобится локальная серверная среда, способная работать с WordPress. Рекомендуется использовать интегрированные пакеты для настройки сервера, такие как Laragon, XAMPP или Local by Flywheel. Эти инструменты позволяют одним кликом установить Apache/Nginx, PHP и MySQL, избавляя вас от необходимости выполнения сложных настроек. Убедитесь, что версия PHP совместима с текущей стандартной версией WordPress; обычно рекомендуется использовать PHP 7.4 или более новые версии. Кроме того, в разделе “Инструменты” → “Проверка состояния сайта” в интерфейсе WordPress проверьте, нет ли проблем, которые могли бы помешать разработке плагинов.
Во-вторых, важно выбрать мощный кодовый редактор. Visual Studio Code является очень популярным вариантом: он легкий в использовании, бесплатен и обладает большим количеством расширений (плагинов), таких как PHP Intelephense (предоставляющий интеллектуальные советы по коду) и WordPress Snippet (наборы готовых фрагментов кода). Еще одним классическим редактором является PhpStorm, который обеспечивает более глубокую интеграцию с системой разработки WordPress, однако он является платным программным продуктом.
Рекомендуемое чтение От нуля до один: Полное руководство по разработке плагинов для WordPress и лучшие практики。
В заключение, включение режима отладки является неотъемлемым шагом в процессе разработки. Для этого необходимо изменить файлы, расположенные в корневом каталоге WordPress.wp-config.phpДля файлов вы можете включить подробный отчет об ошибках, что крайне важно для обнаружения и устранения проблем в коде. Найдите место, где файл определен (то есть где он объявлен или создан в программе).WP_DEBUGВ места, где используются константы, можно добавить следующий код:
// 启用 WordPress 调试模式
define( 'WP_DEBUG', true );
// 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_LOG', true );
// 在页面上显示错误(开发环境推荐,生产环境必须关闭)
define( 'WP_DEBUG_DISPLAY', true ); Создайте свой первый файл плагина.
В WordPress-плагинах может быть всего один файл. Однако все плагины должны храниться в определенной директории на сервере./wp-content/plugins/Каждый плагин может иметь собственный подкаталог, что помогает в организации более сложной структуры кода.
Примечания к заголовочному разделу плагина
Каждый основной файл плагина должен начинаться стандартизированными комментариями в заголовочном файле PHP – именно так WordPress распознает информацию о плагинах. Создайте новый файл и назовите его…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. Среди прочего:Text DomainиDomain PathПредназначено для подготовки плагинов к работе с международным форматированием текста (i18n – Internationalization).
Реализация простой функции
Теперь давайте добавим к этому плагину простую функцию: автоматическое вставление строки пользовательского текста в конце содержимого статьи. Для этого мы воспользуемся возможностями WordPress.the_contentФильтр-хук. Тот, который вы только что создали…my-first-plugin.phpНиже комментариев в заголовке файла добавьте следующую функцию:
Рекомендуемое чтение Освоение разработки плагинов для WordPress: создание собственных функций с нуля。
// 在文章内容末尾添加自定义文本
function my_first_plugin_add_footer_text( $content ) {
// 确保只在主循环的单篇文章页面执行
if ( is_single() && in_the_loop() && is_main_query() ) {
$footer_text = '<p><em>Спасибо за чтение! Эта статья представлена вам “Моим первым плагином”.</em></p>';
$content .= $footer_text;
}
return $content;
}
add_filter( 'the_content', 'my_first_plugin_add_footer_text' ); После сохранения файла войдите в панель управления WordPress, перейдите на страницу “Плагины” (Plugins), и там вы увидите плагин с названием “Мой первый плагин” (My First Plugin). Активируйте его, затем просмотрите любую статью в блоге — в нижней части статьи должен быть добавлен текст, который мы задали.
Использование основного API WordPress
При дальнейшей разработке вы будете часто взаимодействовать с различными API, предоставляемыми WordPress. Среди них наиболее важной является система “хуков” (Hooks), которая включает в себя “действия” (Actions) и “фильтры” (Filters).
Понимание действий, связанных с использованием хуков (action hooks)
Акционные хуки (action hooks) позволяют выполнять пользовательский код в определенные моменты времени. Например, когда статья публикуется, вы можете отправить уведомление по электронной почте. Для этого можно воспользоваться такими хуками.publish_postПример демонстрирует, как создать функцию, которая записывает информацию в журнал ошибок при публикации статьи:
// 定义文章发布时执行的动作函数
function my_first_plugin_log_post_published( $post_id, $post ) {
// 避免无限循环和非文章类型
if ( wp_is_post_revision( $post_id ) || $post->post_type != ‘post’ ) {
return;
}
// 记录日志
error_log( “文章 ID {$post_id} 已发布,标题为:{$post->post_title}” );
}
// 将函数挂载到 publish_post 动作钩子上
add_action( ‘publish_post’, ‘my_first_plugin_log_post_published’, 10, 2 ); функцияadd_actionТретий параметр — это приоритет (по умолчанию 10); чем меньше число, тем выше приоритет. Четвертый параметр — это количество аргументов, принимаемых функцией.
Понимание работы фильтровых хуков (filter hooks)
Фильтровые хаки (filter hooks) используются для изменения данных. В разделе “Создание вашего первого плагина” мы именно их и применили.the_contentЭто просто фильтр-хук (filter hook). Он принимает исходный текст и позволяет вам его изменить перед тем, как вернуть результат обработки. Еще один распространенный пример использования такого хука — изменение длины резюме статьи.
// 修改摘要的默认字数
function my_first_plugin_custom_excerpt_length( $length ) {
return 30; // 将摘要字数改为30字
}
add_filter( ‘excerpt_length’, ‘my_first_plugin_custom_excerpt_length’ ); Добавить меню входа
Для взаимодействия с пользователями нам часто необходимо добавить страницу меню в боковую панель управления в бэкенде WordPress. Это можно сделать следующим образом:add_menu_pageРеализация функции: Приведённый ниже код добавляет страницу настроек на верхнем уровне для плагина.
Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: создание высококачественных расширений для WordPress с нуля до готового продукта.。
// 创建插件管理菜单
function my_first_plugin_add_admin_menu() {
add_menu_page(
‘我的第一个插件设置’, // 页面标题
‘我的插件’, // 菜单标题
‘manage_options’, // 所需权限
‘my-first-plugin’, // 菜单slug
‘my_first_plugin_settings_page’, // 回调函数,用于输出页面内容
‘dashicons-admin-plugins’, // 图标(可选)
100 // 菜单位置(可选)
);
}
add_action( ‘admin_menu’, ‘my_first_plugin_add_admin_menu’ );
// 设置页面的回调函数
function my_first_plugin_settings_page() {
?>
<div class="“wrap”">
<h1>Настройки моего первого плагина</h1>
<p>Это страница настроек плагина. В будущем вы сможете добавлять сюда формы и опции.</p>
</div>
<?php
} Безопасность плагинов и рекомендуемые практики их использования
При разработке плагинов для использования другими пользователями безопасность и качество кода играют ключевую роль. Соблюдение распространенных рекомендаций (бестпрактик) позволяет защитить веб-сайт от вредоносных атак, а также обеспечить совместимость и удобство обслуживания плагинов.
Проверка и эскапирование данных
Никогда не доверяйте данным, введенным пользователем, или данным, хранящимся в базе данных. Перед выводом на браузер эти данные необходимо обработать (эскапировать); перед сохранением в базу данных их следует проверить и очистить. WordPress предоставляет множество вспомогательных функций для выполнения этих операций.
- Экранирующий вывод (escape output): используйте.
esc_html()、esc_attr()、esc_url()иwp_kses_post()Функции типа `escape` используются для обработки данных в зависимости от контекста – они помогают избежать неправильного отображения символов или ошибок при передаче данных. - Проверьте введенные данные: используйте этот инструмент для проверки.
sanitize_text_field()、sanitize_email()、intval()Функции предназначены для очистки данных, предоставленных пользователем в форме.
Например, при настройке обработки данных формы на странице:
$user_input = $_POST[‘some_field’] ?? ‘’; // 使用空合并运算符提供默认值
$clean_input = sanitize_text_field( $user_input ); // 清理数据
update_option( ‘my_plugin_option’, $clean_input ); // 安全存储 Использование нестандартных методов проверки (не основанных на стандартах CE) и проверки прав доступа
При обработке запросов форм (особенно тех, которые поступают из файлов admin-ajax.php или admin-post.php) необходимо использовать определенные правила или инструменты.wp_verify_nonce()Для проверки законности запроса и предотвращения атак типа CSRF (Cross-Site Request Forgery). Кроме того, используется…current_user_can()Проверьте, имеет ли текущий пользователь права на выполнение данной операции.
function my_first_plugin_handle_form_submit() {
// 1. 检查nonce
if ( ! isset( $_POST[‘my_nonce_field’] ) || ! wp_verify_nonce( $_POST[‘my_nonce_field’], ‘my_action’ ) ) {
wp_die( ‘安全校验失败!’ );
}
// 2. 检查权限
if ( ! current_user_can( ‘manage_options’ ) ) {
wp_die( ‘权限不足!’ );
}
// 3. 安全地处理数据…
} Организация кода и интернационализация
Для сложных плагинов рекомендуется использовать объектно-ориентированное программирование (ООП) для организации кода, модулизуя его функции с помощью классов. Это повышает читаемость и повторяемость кода.
Кроме того, с самого начала необходимо подготовить плагин к использованию в разных языках (интернационализации). Это означает, что все пользовательские текстовые элементы должны быть обработаны с использованием функций по переводу, предоставляемых WordPress.__()、_e()Процесс упаковки завершен. Ознакомившись с комментариями, расположенными в начале плагина, мы уже определили все необходимые параметры.Text DomainВ коде это следует использовать следующим образом:
$message = __( ‘感谢阅读!本文由“我的第一个插件”为您呈现。’, ‘my-first-plugin’ ); Затем вы можете использовать такие инструменты, как Poedit, для создания нужного контента..potШаблонный файл, предназначенный для создания переводов на разные языки переводчиками..moДокумент.
резюме
С помощью этого руководства вы завершили основной этап создания плагина для WordPress с нуля. Вы научились настраивать среду разработки, создавать файлы плагинов с стандартными заголовочными комментариями, а также использовать мощную систему хуков (actions и filters) WordPress для добавления новых функций. Мы также рассмотрели, как безопасно добавлять меню для управления плагином, обрабатывать данные и подчеркнули важность безопасности и интернационализации. Разработка плагинов – это процесс постоянного обучения и практики; ключевым моментом является понимание работы системы хуков WordPress и правил безопасности. Теперь вы можете попробовать разработать более сложные функции, такие как создание пользовательских таблиц в базе данных, добавление шорткодов (shortcodes), вставок (widgets) или REST API-шлюзов, постепенно создавая полнофункциональные и надежные коммерческие плагины.
Часто задаваемые вопросы
Должен ли плагин находиться в отдельной папке?
Нет, плагин может быть просто отдельным модулем (компонентом программы)..phpФайлы можно просто разместить в нужном месте./wp-content/plugins/Файлы находятся в соответствующем каталоге. Однако для плагинов, которые содержат несколько файлов, ресурсов (например, JS- и CSS-файлов) или требуют перевода, настоятельно рекомендуется использовать отдельную папку для хранения всех связанных файлов. Это позволит сделать структуру проекта более четкой и упростить управление им.
Как сохранить настройки моего плагина в базе данных?
WordPress предоставляет очень удобный API для работы с настройками (опциями). Вы можете им пользоваться для изменения параметров сайта.add_option()、get_option()иupdate_option()Существуют функции для добавления, получения и обновления настроек плагинов. Эти данные хранятся в безопасном виде в системе WordPress.wp_optionsВ таблицах базы данных. Для больших объемов структурированных данных можно рассмотреть возможность их сериализации в виде массивов или строк в формате JSON перед хранением.
Может ли мой разработанный плагин конфликтовать с другими плагинами?
Возможно, особенно если плагин использует общие хендлеры (hooks), имена функций или имена классов. Чтобы избежать конфликтов, рекомендуется следовать следующим практикам: добавлять уникальные префиксы к всем вашим функциям, классам и переменным (например, используя аббревиатуры или названия плагина); использовать специальные идентификаторы плагинов в качестве пространств имен (в PHP 5.3 и выше это возможно); при использовании хендлеров выбирать соответствующий уровень приоритета, чтобы обеспечить желаемый порядок их выполнения.
Какие версии WordPress должны быть совместимы с этим плагином?
Это зависит от ваших целевых пользователей. Как правило, рекомендуется сделать плагин совместимым с текущей основной версией программы, а также с одной или двумя предыдущими версиями. Вы можете это сделать внутри кода плагина…readme.txtФайл был успешно обработан (или прочитан).Requires at least:Необходимо указать минимально требуемую версию WordPress для использования определённых функций или возможностей. В процессе разработки следует избегать использования функций, доступных только в более новых версиях WordPress.function_exists()Проводится проверка совместимости с целью расширения сферы применения плагина.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- Полное руководство по разработке плагинов для WordPress: от основ до мастерства создания профессиональных расширений
- Разработка плагинов для WordPress: от основ до мастерства: создание вашего первого пользовательского плагина
- От нуля до единицы: Полное руководство по постепенному созданию вашего первого плагина для WordPress