Подготовка среды для разработки плагинов для WordPress
Перед началом написания кода крайне важно иметь стабильную и изолированную среду для разработки. Это не только позволит защитить ваш производственный сайт, но и обеспечит свободу для тестирования и отладки. Наиболее рекомендуемым способом является использование локальной среды разработки, такой как Local by Flywheel, XAMPP или MAMP. Эти инструменты позволяют одним кликом установить на вашем локальном компьютере необходимые для работы с WordPress компоненты: PHP, MySQL и веб-сервер.
Далее вам необходимо включить режим отладки в локальной установке WordPress. Это поможет быстро обнаруживать ошибки в процессе разработки. Откройте каталог с исходными файлами WordPress (каталог с расширением `wp-content`). wp-config.php В файле найдите или добавьте следующие определения констант:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false ); После такой настройки все сообщения об ошибках и предупреждениях будут записываться в соответствующий файл. /wp-content/debug.log Файлы хранятся внутри системы и не отображаются непосредственно на странице, поэтому они не влияют на пользователей, работающих с пользовательским интерфейсом (фронтендом).
Рекомендуемое чтение Руководство по разработке плагинов для WordPress: Создание вашего первого пользовательского плагина с нуля。
В конце концов, вам понадобится кодовый редактор. Visual Studio Code, PhpStorm или Sublime Text — отличные варианты, которые обеспечивают хорошую поддержку синтаксиса и предложений кода при разработке на PHP и для работы с WordPress. Убедитесь, что ваш редактор позволяет легко получать доступ к файлам проекта, находящимся на локальном сервере.
Создайте свой первый плагин.
В сущности, плагин для WordPress представляет собой один или несколько файлов, расположенных в определенной директории сайта. wp-content/plugins PHP-файлы, находящиеся в каталоге. Каждый плагин должен иметь главный файл, и в начале этого файла должны быть указаны стандартные аннотации с информацией о плагине, чтобы WordPress мог его распознать.
Напишите заголовок плагина.
Вашем wp-content/plugins В каталоге создайте новую папку, например, назовите её «NewFolder». my-first-pluginВ этой папке создайте главный файл. my-first-plugin.phpВ начале файла должна быть присутствовать примечание в следующем формате:
<?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
*/ В этом комментарии поле “Plugin Name” является обязательным для заполнения; все остальные поля являются необязательными. WordPress считывает эту информацию и отображает ее на странице управления плагинами в бэкэнде.
Реализация простой функции
Теперь давайте добавим первую реальную функцию для этого плагина: автоматическое вставление пользовательского текста в конец содержимого статьи. Для этого мы будем использовать… the_content Этот фильтр-хук (Filter Hook).
Рекомендуемое чтение Введение в разработку плагинов для WordPress: от основ до мастерства: обмен практическим опытом и ключевыми навыками。
Ниже комментариев в начале файла добавьте следующий код:
function myfp_add_text_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>Спасибо, что прочитали эту статью. Она представлена вам проектом “Мой первый плагин”.</em></p>';
$content .= $custom_text;
}
return $content;
}
add_filter( 'the_content', 'myfp_add_text_to_content' ); После сохранения файла перейдите на страницу “Плагины” в интерфейсе управления WordPress. Там вы должны увидеть плагин под названием “Мой первый плагин”. Активируйте его, затем откройте любую статью на сайте — в конце статьи должен появиться текст, который мы определили заранее. В этом коде…myfp_add_text_to_content Это функция, которую мы сами определили.add_filter() Приложите его к… (то есть выполните операцию монтирования на соответствующий носитель или устройство). the_content Этот текст отображается только в главном цикле страницы отдельной статьи на фронтенде. Условия, проверяемые внутри функции, обеспечивают такое поведение.
Понимание основных механизмов работы плагинов для WordPress
Основой мощности и гибкости плагинов для WordPress является механизм хуков (Hooks). Хуки позволяют вставлять собственный код в определенные моменты выполнения основного кода WordPress, тем самым изменяя или улучшая его стандартное поведение. Хуки делятся на два основных типа: хуки действий (Action Hooks) и хуки фильтров (Filter Hooks).
Хокки действий и хокки фильтров
Действие-хук (Action hook) позволяет выполнять пользовательский код при наступлении определенного события — например, после публикации статьи или при загрузке страницы управления. Для его использования возвращаемое значение не требуется. add_action() Функция предназначена для выполнения определенных действий при монтаже (т. е. при активации) плагина. Например, она может запустить какую-либо процедуру по умолчанию при включении плагина.
function myfp_plugin_activation_task() {
// 创建数据库表、初始化选项等
update_option( 'myfp_plugin_installed', '2026-01-01' );
}
register_activation_hook( __FILE__, 'myfp_plugin_activation_task' ); Здесь был использован… register_activation_hookЭто специальный хук для выполнения действий, предназначенный исключительно для активации плагинов.
Фильтр-хук (Filter) позволяет вам изменять данные, передаваемые ему. Он требует, чтобы функция принимала одно значение и возвращала измененное значение. Наш предыдущий пример изменения содержимого статьи является типичным примером использования фильтра. Другим примером может служить изменение длины выдержки из статьи.
Рекомендуемое чтение Обучение разработке плагинов для WordPress: полное практическое руководство от начала до конца.。
function myfp_custom_excerpt_length( $length ) {
return 20; // 将摘录长度改为20个单词
}
add_filter( 'excerpt_length', 'myfp_custom_excerpt_length' ); Использование шорткодов для добавления динамического контента
Помимо хуков (hooks), шорткоды (shortcodes) представляют собой ещё один мощный инструмент для взаимодействия плагинов с контентом. Они позволяют пользователям вставлять простые теги в статьи или страницы, чтобы добавлять дополнительные функции или элементы интерфейса. [my_shortcode]Для вызова сложного контента, сгенерированного плагином, используется соответствующий метод.
Создание короткого кода очень просто – для этого можно воспользоваться соответствующими инструментами или фреймворками. add_shortcode() Функции. Например, вот короткий код для отображения текущего времени:
function myfp_current_time_shortcode( $atts ) {
$atts = shortcode_atts( array(
'format' => 'Y-m-d H:i:s',
), $atts, 'current_time' );
return date( $atts['format'] );
}
add_shortcode( 'current_time', 'myfp_current_time_shortcode' ); Пользователь может вводить текст в редакторе [current_time format="H:i"] Отображать только часы и минуты.
Добавить страницу управления для плагина
Многие плагины требуют наличия параметров настройки, которые обычно предоставляются через страницу меню управления в бэкенде WordPress. WordPress предоставляет ряд функций для добавления элементов верхнего меню или подменю.
Создание страницы настроек плагина
Мы добавим к плагину простую страницу настроек для управления текстовым содержимым, ранее вставляемым в конец статей. Для начала используйте… add_menu_page() или add_options_page() Функция предназначена для регистрации страниц. Обычно простые плагины добавляют такие страницы в подменю “Настройки”.
Добавьте следующий код в основной файл плагина:
function myfp_add_admin_menu() {
add_options_page(
'我的第一个插件设置', // 页面标题
'我的插件设置', // 菜单标题
'manage_options', // 所需权限
'myfp-settings', // 菜单slug
'myfp_settings_page_html' // 用于输出页面内容的回调函数
);
}
add_action( 'admin_menu', 'myfp_add_admin_menu' ); Этот код сообщает WordPress, что при создании меню административной панели следует…admin_menu Действие; выполнение myfp_add_admin_menu Функция для добавления страницы.
Создание формы для страницы настроек
Далее нам необходимо определить… myfp_settings_page_html Функция отвечает за генерацию HTML-контента страницы и обработку процесса сохранения форм. Для безопасного хранения настроек используется система WordPress. options API.
function myfp_settings_page_html() {
// 检查用户权限
if ( !current_user_can( 'manage_options' ) ) {
return;
}
// 处理表单提交
if ( isset( $_POST['myfp_footer_text'] ) ) {
update_option( 'myfp_footer_text', sanitize_textarea_field( $_POST['myfp_footer_text'] ) );
echo '<div class="notice notice-success"><p>Настройки сохранены!</p></div>';
}
// 获取现有值
$current_text = get_option( 'myfp_footer_text', '感谢阅读本文,由“我的第一个插件”为您呈现。' );
?>
<div class="wrap">
<h1>Настройки моего первого плагина</h1>
<form method="post" action="">
<?php wp_nonce_field( 'myfp_settings_action', 'myfp_settings_nonce' ); ?>
<table class="form-table">
<tr>
<th scope="row"><label for="footer_text">Текст, расположенный в нижней части страницы статьи</label></th>
<td>
<textarea name="myfp_footer_text" id="footer_text" rows="4" cols="50" class="large-text"><?php echo esc_textarea( $current_text ); ?></textarea>
<p class="description">Этот текст будет отображаться в конце каждой статьи.</p>
</td>
</tr>
</table>
<?php submit_button(); ?>
<input type="hidden" name="trp-form-language" value="ru"/></form>
</div>
<?php
} Наконец, не забудьте изменить функцию, предназначенную для фильтрации содержимого статей, чтобы она работала с указанными параметрами (опциями). myfp_footer_text Текст читается из файла, а не из жестко заданного строкового значения. Таким образом, создается страница настроек бэкенда с базовыми функциями управления.
резюме
Следуя шагам, описанным в этой статье, вы создали полнофункциональный плагин для WordPress с нуля. Вы научились настраивать среду разработки, создавать базовую структуру плагина, использовать встроенные механизмы WordPress (акции и фильтры) для расширения его функционала, реализовывать шорткоды и разрабатывать интерфейс для администрирования. Суть разработки плагинов заключается в понимании принципов работы механизмов хуков и событий, что позволяет глубоко настраивать поведение WordPress без изменения его исходного кода. Помните: хорошая структура кода, безопасная обработка входных и выходных данных, а также поддержка международных языков являются основой для создания качественных плагинов. Далее вы можете добавить к плагину дополнительные функции — например, пользовательские типы статей, инструменты или REST-сервисы — и продолжать исследовать бесконечные возможности экосистемы WordPress.
Часто задаваемые вопросы
Должен ли плагин содержать только один PHP-файл?
Не обязательно. Плагин может состоять из одного PHP-файла, но для более сложных плагинов рекомендуется модульная структура. Различные функции можно разделить на отдельные классы или файлы, а главный файл будет отвечать только за их загрузку и инициализацию плагина. Это облегчает обслуживание и организацию кода. Например, можно создать… includes/ Каталог содержит функциональные классы.admin/ Каталог содержит код, связанный с бэкендом.public/ Каталог содержит логику, связанную с фронтенд-частью приложения.
Как безопасно обрабатывать пользовательские вводимые данные в плагинах?
При обработке пользовательских вводных данных (например, данных из форм или URL-параметров) необходимо выполнить следующие операции: проверку (validation), очистку (sanitization) и обработку специальных символов (escaping). Для данных, хранящихся в базе данных, следует использовать соответствующие механизмы обеспечения безопасности. sanitize_text_field()、sanitize_textarea_field()、intval() Необходимо очистить такие функции. При выводе данных на HTML-страницу следует использовать… esc_html()、esc_attr()、esc_url() или wp_kses() Необходимо выполнить эскапацию данных для предотвращения атак типа XSS (Cross-Site Scripting).
Как отлаживать код в процессе разработки плагинов?
Кроме включения… WP_DEBUG Кроме того, вы также можете использовать… error_log() Функция записывает пользовательские данные в лог файлы для отладки. Это удобно для проверки значений переменных.var_dump() или print_r() Объединив die() Это быстрый, но грубый способ. Более рекомендуется использовать встроенные инструменты WordPress. wp_die() и wp_send_json()(Для отладки AJAX-запросов.) Кроме того, использование профессиональных инструментов отладки, таких как Query Monitor, позволяет более наглядно отслеживать информацию о выполнении базовых запросов к базе данных, хаках (hooks), скриптах и других процессах во время работы приложения.
Как сделать так, чтобы мой плагин поддерживал несколько языков?
Чтобы плагин поддерживал международную локализацию (i18n), необходимо использовать функции перевода, предоставляемые WordPress. Сначала следует правильно настроить параметры в комментариях, расположенных в начале кода плагина. Text Domain(Например, ‘my-first-plugin’). В коде следует использовать этот формат для всех строк, предназначенных для пользователей. () или _e() Функции могут быть обернуты в специальные оболочки (классы, модули и т. д.), например: ( ‘Hello World’, ‘my-first-plugin’ )Затем используйте такие инструменты, как Poedit, для создания нужного результата. .pot Шаблонный файл, с помощью которого переводчики могут создавать тексты на разных языках. .po и .mo Файлы сохраняются внутри плагина. languages/ В папке.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- Полное руководство по разработке плагинов для WordPress: от основ до мастерства создания профессиональных расширений
- Разработка плагинов для WordPress: от основ до мастерства: создание вашего первого пользовательского плагина
- От нуля до единицы: Полное руководство по постепенному созданию вашего первого плагина для WordPress