Прежде чем начать, убедитесь, что у вас есть локальная или онлайн-среда для разработки и тестирования WordPress. Интегрированные среды, такие как Local, XAMPP или MAMP, являются отличным выбором. Кроме того, вам понадобится компьютер с установленным кодовым редактором (например, Visual Studio Code или PhpStorm), а также базовые знания PHP, HTML, CSS и JavaScript.
Наличие четко организованной среды разработки является основой для всех последующих работ. Оно позволяет сосредоточиться на логике кода, а не на настройках самой среды разработки.
Создайте свой первый файл плагина.
Любой плагин для WordPress должен содержать по меньшей мере один основной PHP-файл, который должен включать специальную заголовочную строку (plugin header), предназначенную для предоставления системе WordPress необходимой метаинформации о плагине.
Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: создание профессиональных плагинов с нуля。
Примечания в заголовочном файле плагина и основной файл
Во-первых, в каталоге установки WordPress… wp-content/plugins/ Внутри этой папки создайте новую папку, например, назовите её «New Folder». my-first-pluginВ этой папке создайте главный файл. my-first-plugin.phpВ начале файла обязательно должны быть добавлены стандартные комментарии, описывающие используемые плагины.
<?php
/**
* Plugin Name: 我的第一个功能插件
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个学习 WordPress 插件开发的示例插件,用于在前端页面底部添加自定义文本。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Этот комментарий является своего рода “идентификационным документом” плагина. WordPress считывает его для получения информации о плагине. Plugin Name Имя плагина будет отображаться на странице административного интерфейса; другая информация, такая как версия и описание плагина, также будет показана в соответствующих разделах. После сохранения файла вы сможете увидеть этот неактивированный плагин на странице “Плагины” в административной панели WordPress.
Реализация функции: добавление действий-хуков (action hooks).
Логика плагина в основном реализуется с использованием системы хуков (Hooks) WordPress. Мы будем её использовать. wp_footer Этот хук для выполнения определенных действий выводит текст в нижней части страницы веб-сайта.
Ниже комментариев в начале файла плагина добавьте следующий код:
// Добавление пользовательского текста в нижнюю часть веб-сайта
function mfp_add_footer_text() {
echo '<p style="text-align: center; color: #666;">Спасибо за прочтение! Нижний блок этой страницы был сгенерирован плагином “Мой первый функциональный плагин” („My First Functional Plugin“).</p>'add_action( 'wp_footer', 'mfp_add_footer_text' ); Здесь мы создали объект с именем… mfp_add_footer_text Используйте пользовательские функции, затем примените их. add_action() Функция “монтирует” эту функцию на определенное место (например, в систему, в библиотеку или в другой модуль программы). wp_footer Этот хук (hook) будет активироваться в момент, когда WordPress достигнет раздела подвала (footer) страницы. В этот момент наша функция будет автоматически вызвана, и будет выведен соответствующий фрагмент HTML-кода.
Рекомендуемое чтение Шаг за шагом создавайте свой первый плагин для WordPress: от начала до практической разработки.。
Для плагина необходимо добавить страницу с настройками управления.
Полнофункциональный плагин обычно требует наличия интерфейса для настройок в бэкенде, который позволяет пользователям изменять поведение плагина без необходимости вносить изменения в код. Мы создадим простую страницу с настройками.
Создать пункт меню "Администрирование".
Во-первых, нам нужно использовать add_action( ‘admin_menu’, … ) Давайте добавим новый пункт меню в менеджер базы данных. Продолжите добавлять следующий код в ваш основной файл плагина:
// 添加管理菜单
function mfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限要求
'mfp-settings', // 菜单slug
'mfp_settings_page', // 显示页面内容的回调函数
'dashicons-admin-generic', // 图标(使用Dashicons)
30 // 菜单位置
);
}
add_action( 'admin_menu', 'mfp_add_admin_menu' ); add_menu_page() Функции, предоставляемые ядром WordPress, представляют собой API, позволяющие добавлять верхний уровень меню в левую навигационную панель. Мы указали соответствующие права (permissions) для использования этих функций. manage_optionsКак правило, к этим ресурсам имеют доступ только администраторы.
Создание страницы настроек и формы
Далее нам необходимо определить вышеупомянутые функции-обратные вызовы (callback functions). mfp_settings_page Необходимо отобразить HTML-контент страницы настройок и обработать данные, введенные пользователем в форме, с целью их сохранения.
\n// Установка HTML-контента страницы настроек
function mfp_settings_page() {
// Проверка прав пользователя
if ( !current_user_can( ‘manage_options’ ) ) {
return;
}
// Обработка отправки формы
if (isset( $_POST[‘mfp_footer_text’] )) {
// Проверка и очистка введенных данных
new_text = sanitize_text_field( $_POST[‘mfp_footer_text’] );
// Сохранение данных в базе данных с помощью update_option
update_option( ‘mfp_footer_text’, new_text );
echo ‘<div class="“notice" notice-success is-dismissible”><p>Настройки сохранены!</p></div>’// Получаем текущее значение из базы данных для заполнения формы
$current_text = get_option( ‘mfp_footer_text’, ‘Это стандартный текст футера.’ );
?>
<div class="“wrap”">
<h1>Настройки моего плагина.</h1>
<form method="“post”" action="/ru/“”/" data-trp-original-action="“”">
<?php wp_nonce_field( ‘mfp_save_settings’, ‘mfp_settings_nonce’ ); ?>
<table class="“form-table”">
<tr>
<th scope="“row”"><label for="“mfp_footer_text”">Кастомный текст для футера страницы</label></th>
<td>
<input name="“mfp_footer_text”" type="“text”" id="“mfp_footer_text”" value="“NO NUMERIC NOISE KEY" 1001” class="“regular-text”">
<p class="“description”">Этот текст будет отображаться внизу всех страниц сайта.</p>
</td>
</tr>
</table>
<?php submit_button(); ?>
<input type="hidden" name="trp-form-language" value="ru"/></form>
</div>
<?php
} Эта функция выполняет несколько ключевых задач: проверку прав доступа и обработку отправки форм (с использованием…) update_option Обработка данных (хранение информации), а также отображение пользовательского интерфейса в виде форм. Обратите внимание на использование соответствующих инструментов и технологий. sanitize_text_field() и esc_attr() Используйте такие безопасные функции, чтобы предотвратить атаки типа XSS.
Сделать функцию настраиваемой
Теперь нам нужно изменить функцию, отвечающую за вывод текста в футере, чтобы она брала данные пользователей из базы данных, а не использовала жестко заданный текст.
Рекомендуемое чтение Освоение разработки плагинов для WordPress с нуля: полное руководство и практические упражнения。
// 更新页脚文本函数,使其可配置
function mfp_add_footer_text() {
// 从数据库获取保存的文本,如果没有则使用默认值
$footer_text = get_option( ‘mfp_footer_text’, ‘感谢阅读!本页脚由“我的第一个功能插件”生成。’ );
if ( !empty( $footer_text ) ) {
echo ‘<p style="“text-align:" center; color: #666;”>’ . esc_html( $footer_text ) . ‘</p>’{
echo ‘Это текст, который будет отображаться внизу страницы.’;
}
}
add_action( ‘wp_footer’, 'mfp_add_footer_text' ); Таким образом, плагин с основными функциями администрирования создан. Пользователи могут изменять текст в режиме администрирования, и эти изменения немедленно отражаются на веб-сайте.
Лучшие практики разработки плагинов и аспекты безопасности
Соблюдение лучших практик не только позволяет повысить качество кода, но и обеспечивает безопасность и совместимость плагинов.
Использование префиксов и пространств имен
Все ваши определённые функции, классы, переменные и имена параметров должны иметь уникальные префиксы, чтобы избежать конфликтов с ядром WordPress, темами или другими плагинами. В данном примере мы использовали такие префиксы… mfp_ При создании своего первого плагина рекомендуется использовать префикс “(My First Plugin)”. Для более сложных плагинов можно задействовать пространства имен в PHP.
Проверка данных, их очистка и экранирование.
В этом заключается суть безопасности плагинов: любые данные, вводимые пользователями (включая администраторов), должны рассматриваться как ненадежные.
* 验证 (Validation): 检查数据是否符合预期格式(如是否为邮箱、数字)。
* 清理 (Sanitization): 在将数据存入数据库或用于其他操作前,移除其中的非法或危险字符。我们使用了 sanitize_text_field()。
* 转义 (Escaping): 在将数据从数据库输出到 HTML、JavaScript 或 URL 时,进行转义以防止 XSS 攻击。我们使用了 esc_html() и esc_attr()。
Подготовка к интернационализации
Чтобы плагин мог быть переведён пользователями по всему миру, все пользовательские текстовые строки необходимо обернуть в функции интернационализации WordPress. Измените способ вывода текстовых данных в нашем плагине.
эхо ‘<p style="“text-align:" center; color: #666;”>’\n‘ . esc_html__( “Спасибо за чтение! Эта нижняя часть страницы была создана с помощью плагина ”Мой первый плагин’.‘, ’my-first-plugin‘ ) . '</p>’; Кроме того, убедитесь, что в примечаниях к заголовку плагина указаны все необходимые параметры. Text DomainЗатем используйте такие инструменты, как Poedit, для создания файла шаблона в формате .pot.
Отладка, тестирование и подготовка к публикации
Перед тем, как разместить плагин в производственную среду или отправить его в официальный каталог, тщательное тестирование крайне важно.
Включить режим отладки
В конфигурационном файле WordPress wp-config.php Включение режима отладки позволяет видеть ошибки, предупреждения и сообщения PHP, что очень полезно для разработки.
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true ); // 将错误记录到 wp-content/debug.log 文件
define( ‘WP_DEBUG_DISPLAY’, false ); // 不在页面上直接显示错误 Проведение тестов на функциональность и совместимость
- Функциональное тестирование: Поочередно проверять все функции плагина: активация/деактивация, сохранение настроек, а также правильность вывода информации на пользовательском интерфейсе.
- Тестирование совместимости: проверьте работу вашего плагина на разных версиях WordPress (особенно на более старых), версиях PHP (7.4+ и 8.x), а также в среде популярных тем и других распространенных плагинов.
- Проверка безопасности: Для обнаружения уязвимостей, таких как SQL-инъекции, XSS или CSRF, можно использовать автоматизированные инструменты или вручную проверять код. Поле Nonce, которое мы ранее добавили, предназначено именно для предотвращения атак типа CSRF.
Подготовка к публикации файла.
Если планируется публикация, необходима стандартная структура файла. Обычно она включает в себя следующие элементы:
* 主插件文件 (如 my-first-plugin.php)
* readme.txtДанный текст должен быть написан в соответствии с форматом, предусмотренным сайтом WordPress.org, и использоваться для отображения информации на странице каталога плагинов.
* assets Папка: используется для хранения иконок, скриншотов и других файлов.
* languages Папка: используется для хранения файлов с переводами (.po/.mo).
* includes Папка: используется для хранения других файлов с PHP-классами.
* uninstall.phpОпределение действий по очистке после удаления плагина (например, удаление записей из базы данных).
резюме
С помощью этого руководства вы прошли весь процесс разработки базового плагина для WordPress: от создания главного файла, содержащего стандартную информацию заголовка, до добавления функций с использованием действий-хуков, а также от создания полноценной страницы настроек в административной панели до обеспечения безопасности плагина. Мы особо подчеркнули важность использования префиксов, безопасной обработки данных и соблюдения международных стандартов (иностранизации), а также кратко рассказали о подготовительных шагах перед отладкой и публикацией плагина.
Помните: суть разработки плагинов заключается в понимании и умелом использовании обширной системы хуков (Hooks) и фильтров (Filters) в WordPress. Начав с этого простого плагина, вы сможете дальше изучать, как добавлять шорткоды (Shortcodes), виджеты (Widgets), пользовательские типы статей (Custom Post Types, CPT) или REST API-эндпоинты, чтобы создавать мощные, гибкие и соответствующие стандартам коммерческие плагины.
Часто задаваемые вопросы
Куда необходимо разместить плагин?
Плагины WordPress должны быть размещены в wp-content/plugins/ В каталоге каждый плагин может представлять собой отдельный PHP-файл (что характерно для минималистичных плагинов). Однако более распространенным подходом является создание папки с именем плагина, в которую помещаются основной файл плагина и все другие ресурсные файлы.
Как удалить данные, созданные плагином?
Когда пользователь в бэкенде нажимает на кнопку “Удалить” плагина, по умолчанию удаляется только файл плагина, но таблица параметров плагина, хранящаяся в базе данных, остается нетронутой.wp_optionsДанные, находящиеся внутри этого элемента, будут сохранены. Для полного удаления необходимо создать новый элемент. uninstall.php Файл, и использовать его внутри… delete_option() Функция предназначена для удаления соответствующих параметров (опций). Этот файл будет вызван только в случае, если пользователь удалил плагин с помощью функции удаления в WordPress.
В чем разница между действиями (actions) и фильтрами (filters) в хуках (hooks)?
动作钩子(Action Hooks,使用 add_action()Эта функция позволяет вставлять и выполнять определенный код в WordPress в определенный момент времени; при этом от кода не ожидается возвращение какого-либо результата. Например, это может быть использовано для выполнения какой-то функции в заголовке страницы, в футере или при публикации статьи.
过滤器钩子(Filter Hooks,使用 add_filter()Эта функция позволяет вам изменять данные, передаваемые в рамках процесса. Она принимает одно значение, обрабатывает его и должна возвращать результат обработки. Например, это может быть изменение заголовка статьи, содержимого комментариев или результатов запроса.
Почему мой плагин не отображается в бэкэнде?
Во-первых, проверьте, находится ли ваша основная PHP-файл плагина в правильном каталоге, а также правильно сформированы комментарии, обозначающие начало кода плагина (особенно…). Plugin Name:Во-первых, проверьте, правильно ли сформатирован файл. Во-вторых, проверьте, нет ли в файле синтаксических ошибок. Вы можете это сделать с помощью специальных программ или инструментов. wp-config.php Откройте его на китайском (упрощенном) языке. WP_DEBUG Проверьте возможные сообщения об ошибках.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- Полное руководство по разработке плагинов для WordPress: от основ до мастерства создания профессиональных расширений
- От нуля до одного: Подробное руководство по всему процессу разработки тем для WordPress с практическими примерами
- Разработка плагинов для WordPress: от основ до мастерства: создание вашего первого пользовательского плагина