Овладение разработкой плагинов для WordPress является ключевым навыком для расширения функционала веб-сайтов и удовлетворения индивидуальных потребностей пользователей. Это гораздо эффективнее, чем простое изменение шаблонов (тем) сайта. functions.php По сравнению с обычными файлами, использование плагинов позволяет гарантировать независимость функционала от используемого тематического дизайна, что облегчает процесс миграции, управления и обслуживания сайта. В этой статье вы узнаете, как с нуля создать плагин с полноценной структурой, соответствующий стандартам кодирования WordPress.
Подготовка и настройка окружения
Прежде чем начать писать первый строку кода, вам понадобится подходящая среда разработки, а также базовое понимание архитектуры WordPress.
Конфигурация среды разработки
Стандартная среда локального разработчика является основой для эффективной работы. Рекомендуется использовать такие инструменты, как XAMPP, MAMP или Local by Flywheel, которые позволяют одним кликом установить Apache, MySQL/Nginx, PHP и WordPress. Кроме того, убедитесь, что ваш текстовый редактор или интегрированная среда разработки (IDE, например, VS Code или PhpStorm) поддерживает выделение синтаксиса PHP и предоставляет советы по коду — это значительно повысит эффективность разработки.
Рекомендуемое чтение Глубокий анализ разработки плагинов для WordPress: от начала до эффективной настройки。
Понимание архитектуры плагинов WordPress
Плагины WordPress по своей сути представляют собой один или несколько файлов на языке PHP, которые хранятся в определенной папке внутри файловой структуры WordPress-сайта. wp-content/plugins/ Этот инструмент находится в соответствующем каталоге. Его основной принцип работы основан на механизме “хуков” (hooks). Плагины могут выполнять код в определенные моменты времени с помощью “действий-хуков” (action hooks) или изменять данные, возвращаемые другими функциями, с использованием “фильтров-хуков” (filter hooks). Важно это понимать для правильного использов add_action и add_filter Эти две функции являются важными инструментами для начала работы с разработкой плагинов.
Создайте свой первый плагин: гостевой маленький инструмент (грутюль для приветствий).
Мы создадим простой плагин под названием “Ежедневные приветствия”. Он будет отображать пользователю на панели управления сайта пользовательский инструмент для приветствия.
Создание основного файла плагина
Во-первых, в wp-content/plugins/ Создайте новую папку в каталоге и назовите её my-first-greeting-pluginВ этой папке создайте основной файл плагина. my-first-greeting-plugin.php。
Каждый плагин должен начинаться со стандартных заголовочных комментариев, которые служат для идентификации информации о плагине в WordPress. Откройте основной файл и введите следующий код:
<?php
/**
* Plugin Name: 每日问候
* Plugin URI: https://www.yourwebsite.com/my-first-greeting-plugin
* Description: 这是一个示例插件,用于在仪表盘显示个性化问候。
* Version: 1.0.0
* Author: Your Name
* Author URI: https://www.yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-greeting
*/ После сохранения файла перейдите на страницу “Плагины” в интерфейсе управления WordPress. Там вы должны увидеть плагин “Ежедневные приветствия” в списке доступных плагинов и сможете его активировать. В настоящее время у этого плагина нет никаких функций.
Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: создание вашего первого плагина с нуля。
Добавьте небольшие инструменты (так называемые «гаджеты») на панель мониторинга.
Далее мы будем использовать функционал WordPress. wp_dashboard_setup Для добавления пользовательского инструмента панели метрик используйте хук действий (action hook). Под комментариями в начале основного файла добавьте следующий код:
// 添加仪表盘小工具
function mfgp_add_dashboard_widget() {
wp_add_dashboard_widget(
'mfgp_dashboard_widget', // 小工具唯一ID
'每日问候', // 小工具标题
'mfgp_dashboard_widget_content' // 显示内容的回调函数
);
}
add_action( 'wp_dashboard_setup', 'mfgp_add_dashboard_widget' );
// 定义小工具内容
function mfgp_dashboard_widget_content() {
$user = wp_get_current_user();
$hour = date('G'); // 获取当前小时(24小时制)
if ( $hour >= 5 && $hour < 12 ) {
$greeting = '早上好';
} elseif ( $hour >\n= 12 и $hour < 18 ) {
$greeting = '下午好';
} else {
$greeting = '晚上好';
}
echo '<p>' . sprintf( esc_html__( '%s,%s!欢迎回来。', 'my-first-greeting' ), $greeting, esc_html( $user->display_name ) ) . '</p>'echo '<p>' . esc_html__( '这是你的第一个插件创建的问候小工具。', 'my-first-greeting' ) . '</p>';
} Этот код выполняет две функции: во-первых, он определяет функцию. mfgp_add_dashboard_widgetИспользуйте wp_add_dashboard_widget Была создана функция для регистрации небольшого инструмента; затем было выполнено его определение (то есть были заданы его параметры и поведение). mfgp_dashboard_widget_content Функция предназначена для генерации контента мини-приложения; она отображает разные приветствия в зависимости от времени суток и указывает имя пользователя, вошедшего в систему. Обратите внимание, что мы использовали… esc_html__() и esc_html() Подготовка функций к переводу и обработка исходного кода с использованием специальных символов (эскапирования) являются важными практиками, обеспечивающими безопасность и совместимость с различными языками.
После активации плагина обновите страницу панели инструментов, и там появится мини-приложение “Ежедневные приветствия”.
Улучшение функционала плагинов и соблюдение мер безопасности
Базовый плагин уже готов к использованию, но чтобы сделать его более надежным и профессиональным, нам необходимо уделить внимание вопросам безопасности, сопоставимости с требованиями к обслуживанию (управляемости) и возможностям настройки пользователем.
Страница настройок плагина
Было бы полезнее, если бы пользователи могли самостоятельно настраивать приветственные сообщения. Мы создадим для плагина простую страницу настроек.
Во-первых, используйте admin_menu Для действия-хака (action hook) была добавлена страница с подменю (submenu page).
Рекомендуемое чтение Руководство по разработке плагинов для WordPress: Создание вашего первого пользовательского плагина с нуля。
// 添加设置菜单
function mfgp_add_admin_menu() {
add_options_page(
'每日问候设置', // 页面标题
'每日问候', // 菜单标题
'manage_options', // 所需权限
'my-first-greeting-plugin', // 菜单slug
'mfgp_settings_page_content' // 回调函数
);
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' ); Затем необходимо создать содержимое страницы настроек, опции регистрации и механизмы обработки данных, вводимых пользователем в форме, а также обеспечить сохранение этих данных.
// 设置页面内容
function mfgp_settings_page_content() {
?>
<div class="wrap">
<h1></h1>
<form action="/ru/options.php/" method="post" data-trp-original-action="options.php">
<?php
settings_fields( 'mfgp_settings_group' ); // 输出安全字段
do_settings_sections( 'my-first-greeting-plugin' ); // 输出设置区块
submit_button(); // 输出提交按钮
?>
<input type="hidden" name="trp-form-language" value="ru"/></form>
</div>
<?php
}
// 初始化设置
function mfgp_settings_init() {
register_setting(
'mfgp_settings_group', // 选项组名
'mfgp_custom_message', // 选项名
array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
);
add_settings_section(
'mfgp_section', // 区块ID
'自定义问候设置', // 区块标题
null, // 区块描述回调(无)
'my-first-greeting-plugin' // 所属页面
);
add_settings_field(
'mfgp_field',
'自定义问候语前缀',
'mfgp_field_callback', // 输出字段HTML的回调
'my-first-greeting-plugin',
'mfgp_section'
);
}
add_action( 'admin_init', 'mfgp_settings_init' );
// 设置字段的回调函数
function mfgp_field_callback() {
$value = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
echo '<input type="text" name="mfgp_custom_message" value="' . esc_attr( $value ) . '" class="regular-text" />'echo '<p class="description">Этот текст будет добавлен перед приветствием.</p>';
} В конце необходимо изменить функцию, отвечающую за обновление содержимого мини-приложения, чтобы пользовательские настройки могли быть применены.
// 更新小工具内容函数,使用自定义消息
function mfgp_dashboard_widget_content() {
$user = wp_get_current_user();
$hour = date('G');
$custom_msg = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
if ( $hour >= 5 && $hour < 12 ) {
$greeting = '早上好';
} elseif ( $hour >\n= 12 и $hour < 18 ) {
$greeting = '下午好';
} else {
$greeting = '晚上好';
}
echo '<p>' . esc_html( $custom_msg ) . sprintf( esc_html__( '%s,%s!', 'my-first-greeting' ), $greeting, esc_html( $user->display_name ) ) . '</p>';
} Теперь в меню “Настройки” в бэкенде WordPress появилась страница с опцией “Ежедневные приветствия”, позволяющая администратору сохранить пользовательский приветственный текст.
Соблюдение стандартов безопасности и кодирования
В процессе разработки необходимо соблюдать правила безопасности WordPress: для всех данных, поступающих от пользователей или из базы данных и предназначенных для отображения, следует использовать соответствующие функции экранирования (эскапирования). esc_html, esc_attr, esc_urlНеобходимо проверять и очищать все данные, введенные пользователями (например, с использованием определенных правил обработки текста). sanitize_text_fieldИспользование wp_kses_post или wp_kses Рекомендуется разрешить использование безопасного HTML-кода. Кроме того, советуется соблюдать соответствующие стандарты безопасности. Официальный стандарт PHP-кодирования для WordPressЭто сделано для обеспечения четкости и согласованности кода.
Интернационализация плагинов и подготовка к их публикации
Чтобы ваш плагин мог использоваться пользователями по всему миру, интернационализация является неотъемлемым шагом. Кроме того, для подготовки к публикации в официальном каталоге необходимо соблюдать определенные стандарты.
Реализация интернационализации плагина
Мы уже использовали это в коде. esc_html__() Для обработки строки, требующей перевода, необходимо создать файл в соответствующем формате в каталоге плагинов. Для реализации функций интернационализации также потребуется выполнить дополнительные настройки в этом файле. languages Папка. Затем добавьте следующий код после комментария в начале основного файла для загрузки текстового поля:
// 加载文本域以实现国际化
function mfgp_load_textdomain() {
load_plugin_textdomain( 'my-first-greeting', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfgp_load_textdomain' ); После этого вы можете использовать такие инструменты, как Poedit, чтобы сканировать строки с переводами в коде плагинов и сгенерировать необходимые данные. .pot Шаблонные файлы, адаптированные для разных языков (например, китайского). zh_CNСоздать .po И после компиляции .mo Файл, поместите его сюда. languages Папка.
Подготовка к публикации в официальном каталоге
Если вы планируете отправить плагин в каталог плагинов WordPress.org, вам необходимо обеспечить высокое качество кода и включить все необходимые файлы метаданных. Например, вам следует создать файл метаданных, в котором будут указаны такие сведения, как название плагина, его описание, версия, авторы, информация о поддержке и т. д. readme.txt Файл должен соответствовать определённому формату. Определенные стандарты использования WordPressДокументация должна включать следующую информацию: название плагина, описание его функций, инструкции по установке, часто задаваемые вопросы (FAQ), логи обновлений и т. д. Кроме того, рекомендуется добавить механизм деинсталляции, который позволит очистить базу данных от связанных с плагином данных после его удаления пользователя.
// 插件卸载时清理选项
function mfgp_uninstall_hook() {
delete_option( 'mfgp_custom_message' );
}
register_uninstall_hook( __FILE__, 'mfgp_uninstall_hook' ); резюме
Создав этот плагин для ежедневных приветствий, мы полностью прошли через основные этапы разработки плагинов для WordPress: от создания базовой структуры файлов и добавления функций с помощью системы действий (action hooks) до разработки интерфейса управления, соблюдения стандартов безопасности и подготовки к международному использованию. Ключевым моментом является понимание и умелое применение системы хуков WordPress, а также постоянное уделять первостепенное внимание вопросам безопасности и стандартам кода. Этот простой пример служит отправной точкой для вашего пути разработки плагинов; на его основе вы сможете изучить более сложные функции, такие как использование шорткодов, создание пользовательских типов статей, разработка REST API-эндпоинтов и т. д., чтобы создавать мощные профессиональные плагины.
Часто задаваемые вопросы
Куда необходимо разместить плагин?
Плагины для WordPress должны быть размещены на сайте в определенных местах (обычно в папке с плагинами или в соответствующих файлах конфигурации системы). wp-content/plugins/ Каждый плагин может представлять собой отдельный PHP-файл, однако чаще встречается вариант, когда плагин размещается в папке с тем же названием, внутри которой находятся основной файл плагина и другие ресурсы.
Почему мой плагин не отображается в списке плагинов в бэкенде?
Пожалуйста, проверьте, правильно сформатированы и полны ли заголовочные комментарии в начале основного плагина (например, информация о названии плагина, описании и т. д.). Убедитесь, что файл находится в нужном каталоге, и что у системы WordPress есть права на чтение этого файла. Также проверьте, нет ли лишних пробелов или других ненужных символов в начале кода на языке PHP.
Как отладить ошибки PHP в плагинах?
В wp-config.php В документе будет указано, что... WP_DEBUG Константа установлена на trueЭто позволит WordPress отображать ошибки PHP, предупреждения и уведомления на страницах. Обратите внимание: эту функцию следует включать только в разработочной среде и обязательно отключить перед запуском сайта в реальном сервисе.
В чем разница между файлами functions.php плагинов и тем (тематических настроек) в WordPress?
В рамках данной темы… functions.php Функции, добавленные в систему, связаны с конкретной темой интерфейса. При смене темы эти функции могут перестать работать. Однако функции, предоставляемые плагинами, независимы от выбранной темы; они всегда доступны при активации плагина. Для реализации универсальных (общеиспользуемых) функций разработка плагинов является более предпочтительным вариантом.
Как позволить другим разработчикам расширять мой плагин?
Вы можете позволить другим разработчикам расширять ваш плагин, предоставив пользовательские “хаки для действий” (action hooks) и “хаки для фильтров” (filter hooks). do_action() Создайте хук действия (action hook) и выполните необходимые действия в тех местах, где требуется вставить код. Используйте этот хук для автоматизации процессов. apply_filters() Создание фильтров-хуков позволяет изменять определенные значения данных в вашем плагине. Это общепринятый способ взаимодействия между плагинами в экосистеме WordPress.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Как выбрать и настроить идеальную тему для WordPress, подходящую именно вам?
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- От нуля до один: Полное руководство и практические советы по созданию профессиональных сайтов с использованием WordPress
- Полное руководство по разработке плагинов для WordPress: от основ до мастерства создания профессиональных расширений