Основная структура и принцип работы плагинов для WordPress
Для разработки плагина для WordPress сначала необходимо понять его основную структуру и способ работы в рамках жизненного цикла WordPress. Плагин по сути представляет собой один или несколько PHP-файлов, которые используют обширный набор API (интерфейсов программирования приложений), предоставляемых WordPress, для расширения или изменения функционала веб-сайта.
Основой любого плагина являются данные, содержащиеся в его заголовочном файле, который располагается в начале основного файла плагина. Эти данные форматируются с использованием специальных PHP-комментариев и предназначены для предоставления информации WordPress о названии плагина, его описании, версии, авторе и других метаданных. Например, плагин с названием… my-first-plugin.php Файл может начинаться с следующей информации:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习插件开发的简单示例。
* Version: 1.0.0
* Author: 开发者姓名
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ WordPress взаимодействует с плагинами с помощью механизма “хуков” (Hooks). Существует два типа хуков: действия (Actions) и фильтры (Filters). Хуки действий позволяют вставлять собственный код в определенные моменты выполнения WordPress — например, после публикации статьи или при загрузке стилей в верхней части страницы. Хуки фильтров, со своей стороны, позволяют изменять данные, генерируемые WordPress в процессе его работы — например, содержимое статей или длину их аннотаций. Понимание и умелое использование хуков является ключом к эффективному разработанию плагинов.
Рекомендуемое чтение От простого к сложному: полное руководство по освоению разработки плагинов WordPress с нуля。
Понимание структуры организации файлов плагинов
Простой плагин может содержать только один основной файл. Однако по мере добавления новых функций разумная структура организации файлов становится крайне важной. Обычно каталог плагина с полноценным набором функций включает в себя основной файл плагина, а также другие файлы, отвечающие за реализацию различных компонентов плагина. my-plugin.php), предназначенный для хранения функций и классов includes Папка, предназначенная для хранения ресурсов фронтенда. assets Папка (содержащая файлы CSS, JavaScript, изображений), предназначенная для хранения файлов, необходимых для выполнения процесса перевода. languages Папки, а также материалы, используемые для шаблонов пользовательского интерфейса. templates Папки. Такая модульная структура облегчает обслуживание кода и сотрудничество в команде.
Создайте свой первый простой плагин.
Давайте начнем с практического примера. Мы создадим плагин, который будет автоматически добавлять пользовательский текст авторских прав в конце каждой статьи и любого другого контента на сайте.
Во-первых, вам необходимо перейти в каталог установки WordPress. wp-content/plugins Внутри этой папки создайте новую папку и назовите её… my-copyright-noticeЗатем внутри этой папки создайте основной PHP-файл, например, с названием `main.php`. my-copyright-notice.php。
Функция добавления информации о реализации (Implementation Content Addition Feature)
Мы будем использовать фильтрующие хаки (filter hooks). the_content Чтобы реализовать эту функцию, откройте главный файл, сначала добавьте информацию о заголовочном файле плагина, а затем напишите основную функцию.
<?php
/**
* Plugin Name: 自动版权声明
* Description: 在文章和页面内容末尾自动添加版权信息。
* Version: 1.0
* Author: WordPress 学习者
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在内容末尾添加版权声明的函数
*
* @param string $content 原始的文章内容。
* @return string 添加了版权声明后的内容。
*/
function mycn_add_copyright_to_content( $content ) {
// 仅对主循环内的文章和页面生效
if ( is_single() || is_page() ) {
$copyright_text = '<p><em>© Авторские права: Данная статья принадлежит данному веб-сайту и не может быть воспроизведена без разрешения.</em></p>';
$content .= $copyright_text;
}
return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'mycn_add_copyright_to_content' ); После сохранения файла войдите в панель управления WordPress, перейдите на страницу “Плагины” (Plugins), и там вы увидите плагин “Автоматическое указание авторских прав” (Automatic Copyright Statement). Активируйте его, затем просмотрите любую статью или страницу — в нижней части содержимого появится текст авторских прав, который вы определили. Хотя этот пример и прост, он полностью демонстрирует весь процесс создания, кодирования и активации плагина.
Рекомендуемое чтение Освойте разработку плагинов WordPress с нуля: принципы, практика и продвинутые техники。
Взаимодействие с базой данных с использованием API WordPress
Подразумевается, что продвинутые плагины часто требуют хранения и поиска данных. WordPress предоставляет очень удобные классы для работы с базами данных. wpdb Интерфейс API позволяет безопасно работать с базой данных, не требуя напрямого написания SQL-запросов.
Для работы с простыми данными в формате ключ-значение, например, конфигурационными параметрами плагинов, настоятельно рекомендуется использовать API настроек (option API). Вы можете воспользоваться им для управления этими параметрами. add_option(), get_option(), update_option() и delete_option() Для управления данными используются такие функции, как сериализация и хранение информации. Эти функции автоматически обрабатывают процесс преобразования данных в подходящий формат для хранения и затем сохраняют их в нужных местах. wp_options В таблице.
Создание пользовательских таблиц в базе данных
Когда необходимо хранить структурированные, сложные данные (например, заказы, записи о заполнении форм), возможно, потребуется создать пользовательские таблицы в базе данных. Обычно это происходит при активации плагина. Для этого необходимо написать функцию и зарегистрировать её в системе управления базой данных. register_activation_hook На этом особенном крючке.
В вашем основном файле плагина можно содержать код, подобный следующему:
/**
* 插件激活时创建自定义数据库表
*/
function myplugin_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'myplugin_data'; // 获取带前缀的表名,如 wp_myplugin_data
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id int NOT NULL,
data_value text NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
// 引入 WordPress 升级所需的文件
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
// 注册激活钩子
register_activation_hook( __FILE__, 'myplugin_create_custom_table' ); dbDelta() Функции в WordPress представляют собой мощные инструменты для создания или обновления таблиц в базе данных. Они сравнивают существующую структуру таблицы с вашим SQL-запросом и выполняют только необходимые изменения. Обратите на это внимание.dbDelta() Я очень чувствителен к формату SQL-запросов (например, к определению ключей, стилю отступов).
Создание интерфейса для управления плагинами и соблюдение мер безопасности
Профессиональный плагин обычно требует наличия страницы конфигурации в бэкенде, которая позволяет пользователям изменять настройки. Вы можете воспользоваться API настроек WordPress для создания такой страницы в стандартизированном и безопасном формате. Этот API обеспечивает проверку заполненных форм, обработку защищенных данных (например, используя токи безопасности – nonce), а также хранение пользовательских настроек, значительно упрощая процесс разработки.
Рекомендуемое чтение Индивидуальная тема WordPress: полное руководство по созданию уникального внешнего вида сайта с нуля。
Страница настройок плагина
Во-первых, вам нужно использовать add_action() Функция осуществляет монтирование объекта на определённое место (например, в систему, в базу данных или в другой компонент программы). admin_menu Функция-обратный вызов для действия-хака (action hook) используется для добавления пункта меню и соответствующей страницы. Затем, в функции-обратном вызове этой страницы, применяются функции API для создания формы.
Ниже приведен упрощенный пример демонстрации того, как добавить страницу верхнего меню и зарегистрировать поле настроек:
/**
* 添加插件设置菜单
*/
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'myplugin-settings', // 菜单 slug
'myplugin_settings_page', // 显示设置页面的回调函数
'dashicons-admin-generic', // 图标
80 // 菜单位置
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
/**
* 初始化插件设置
*/
function myplugin_settings_init() {
// 注册一个新的设置到 “myplugin_settings” 页面
register_setting( ‘myplugin_settings’, ‘myplugin_options’ );
// 在页面中添加一个区域
add_settings_section(
‘myplugin_section’,
‘主要设置’,
null, // 可选的区域描述回调函数
‘myplugin_settings’
);
// 向区域中添加一个字段
add_settings_field(
‘api_key’,
‘API 密钥’,
‘myplugin_api_key_field_callback’, // 渲染字段 HTML 的回调函数
‘myplugin_settings’,
‘myplugin_section’
);
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );
/**
* 渲染 API 密钥字段
*/
function myplugin_api_key_field_callback() {
$options = get_option( ‘myplugin_options’ );
?>
<input type="‘text’" name="‘myplugin_options[api_key]’" value="‘NO NUMERIC NOISE KEY" 1003’>
<?php
}
/**
* 设置页面的显示内容
*/
function myplugin_settings_page() {
?>
<div class="“wrap”">
<h1></h1>
<form action="/ru/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
<?php
settings_fields( ‘myplugin_settings’ ); // 输出安全字段
do_settings_sections( ‘myplugin_settings’ ); // 输出设置区域和字段
submit_button( ‘保存设置’ );
?>
<input type="hidden" name="trp-form-language" value="ru"/></form>
</div>
<?php
} Соблюдение стандартов безопасности WordPress
Безопасность является одним из главных приоритетов при разработке плагинов. Все данные, вводимые пользователями, а также результаты их действий, необходимо тщательно обрабатывать. WordPress предоставляет ряд функций, которые помогут вам в этом.
* 转义输出:使用 esc_html(), esc_attr(), esc_url() и wp_kses_post() Функции типа “wait” и подобные обеспечивают безопасность данных, отображаемых на странице.
* 验证和清理输入:在处理表单提交的数据前,使用 sanitize_text_field(), intval(), sanitize_email() Необходимо очистить такие функции.
* Nonce 验证:对于所有涉及状态更改的操作(如表单提交、AJAX 请求),使用 wp_nonce_field(), wp_create_nonce() и wp_verify_nonce() Это сделано для предотвращения атак типа Cross-Site Request Forgery (CSRF).
* 能力检查:使用 current_user_can() Функция для проверки того, имеет ли текущий пользователь права на выполнение определенной операции (например,…) ‘edit_posts’, ‘manage_options’)。
резюме
Разработка плагинов для WordPress представляет собой систематический процесс, начинающийся с понимания основной структуры системы (хаки, заголовочные файлы), а затем постепенно расширяющийся до реализации функций, управления данными, создания пользовательского интерфейса и усиления безопасности. Начиная с создания простого плагина, например, содержащего информацию об авторских правах, разработчики могут быстро получить представление о рабочем процессе создания плагинов. Далее они могут изучить использование API для настройки параметров плагина (Options API) и других инструментов, необходимых для расширения его возможностей. wpdb Использование классов для работы с данными является необходимым шагом при хранении сложной информации. Наконец, создание пользовательских интерфейсов бэкенда с помощью предоставленных API и строгое соблюдение стандартов безопасного программирования WordPress играют ключевую роль в обеспечении профессиональности, надежности плагина и его широкого распространения. Постоянная практика, а также изучение исходного кода основных компонентов системы и других качественных плагинов – это лучший способ повысить свои навыки разработки.
Часто задаваемые вопросы
Как минимум, какое количество файлов требуется для создания плагина для WordPress?
Полнофункциональный плагин для WordPress может состоять всего из одного PHP-файла. Достаточно, чтобы этот файл содержал необходимые аннотации (хедерные комментарии) и реализовывал требуемые функции – тогда WordPress сможет его распознать и активировать. Для более сложных плагинов, с точки зрения удобства обслуживания, рекомендуется разделить их на несколько файлов и каталогов.
Как сделать так, чтобы плагин поддерживал перевод на несколько языков?
WordPress использует технологию GNU gettext для реализации функций интернационализации (i18n). Вам необходимо выполнить следующие действия: во-первых, в начале каждого плагина и в местах, где требуется перевод текстов, используйте специальные заголовки (такие как `<?php _e('') ? '...' : '';`) для обозначения текстов, подлежащих переводу. __(‘文本’, ‘your-text-domain’) или _e(‘文本’, ‘your-text-domain’) Такую функцию необходимо упаковать в соответствующий формат. Затем с помощью инструментов вроде Poedit создается шаблон файла .pot, а также файлы .po и .mo для нужного языка. zh_CN.poНаконец, с помощью… load_plugin_textdomain() Функция загружает файлы с переводами во время инициализации плагина.
Как правильно загружать файлы JavaScript и CSS, находящиеся в плагинах?
Для обеспечения совместимости и предотвращения конфликтов не следует напрямую вставлять ссылки на ресурсные файлы в HTML-код. Для ресурсов, используемых на стороне пользователя (фронтенде), следует использовать специальные методы или инструменты для их загрузки и обработки. wp_enqueue_script() и wp_enqueue_style() Функции и их подключение к wp_enqueue_scripts Действия должны быть связаны с соответствующими “хуками” (hooks). Что касается ресурсов, доступных администраторам, их необходимо разместить (монтировать) на соответствующих позициях в системе. admin_enqueue_scripts На крючках. Эти функции позволяют указывать зависимости и версии программных компонентов, а также обеспечивают, что одни и те же ресурсы загружаются только один раз.
Как выполнять отладку при разработке плагинов?
WordPress предоставляет мощные инструменты для отладки. Во-первых, это инструменты, предназначенные для работы с кодом сайта… wp-config.php В документе будет указано, что... WP_DEBUG Константа установлена на trueЭто позволит отображать ошибки, предупреждения и уведомления PHP непосредственно на странице. Также вы можете включить все эти функции одновременно. WP_DEBUG_LOGЗаписать ошибку в… wp-content/debug.log (Файл) и WP_DEBUG_DISPLAY(Управляет отображением на странице). Кроме того, используется… error_log() Запись логов в пользовательские файлы с помощью функций также является эффективным способом отслеживания переменных и процессов.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Как выбрать и настроить идеальную тему для WordPress, подходящую именно вам?
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- От нуля до один: Полное руководство и практические советы по созданию профессиональных сайтов с использованием WordPress
- Полное руководство по разработке плагинов для WordPress: от основ до мастерства создания профессиональных расширений