Понимание основной архитектуры плагинов WordPress
Прежде чем начинать разработку, необходимо понять основные концепции и принципы работы плагинов для WordPress. Плагин по сути представляет собой набор PHP-файлов, которые позволяют расширять функционал основной версии WordPress; он обычно включает в себя описание плагина, исполняемый код, ресурсные файлы и т. д. Работа плагина полностью основана на системе хуков (Hooks), предоставляемой самим WordPress.
Исследование стандартной структуры файлов плагинов
Стандартный плагин для WordPress обычно следует определенной структуре каталогов. Основной файл плагина, например… my-first-plugin.phpЭто должно быть размещено в определенном месте. /wp-content/plugins/ Файл находится в данном каталоге или в одном из его подкаталогов. Он крайне важен, поскольку содержит информацию о заголовках вашего плагина, необходимую для его идентификации в системе WordPress.
Типичный каталог плагинов может включать следующие элементы: основной файл плагина, а также папки для хранения статических ресурсов, таких как JavaScript- и CSS-файлы. assets/ Папка, предназначенная для хранения файлов PHP-классов. includes/ Каталог, предназначенный для пользовательского интерфейса admin/ и public/ Папка, а также инструменты, используемые для перевода файлов. languages/ Содержание. Хорошая структура кода способствует его организации и обслуживанию, особенно когда функции плагинов становятся сложнее.
Рекомендуемое чтение От начального уровня до профессионального: полное руководство по разработке плагинов для WordPress и созданию пользовательских функций.。
Ознакомление с ключевой информацией, содержащейся в заголовочных файлах плагинов
Каждый плагин должен начинаться с определенной метаинформации (заголовка), которая содержится в блоке комментариев PHP. Это ключевой момент для распознавания плагинов WordPress. Основной формат такой метаинформации следующий:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://www.example.com/my-first-plugin
* Description: 这是一个简短描述,介绍插件功能的句子。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://www.example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Среди них,Plugin Name Это обязательно; остальная информация является необязательной, но рекомендуется указывать. Особенно это касается… Text Domain и Domain PathЭти данные предназначены для поддержки интернационализации плагинов (работы с несколькими языками). WordPress считывает эти сведения и отображает их на внутренней странице управления плагинами.
Создание локальной среды разработки и первого плагина
Перед началом работы над кодом крайне важно наличие изолированной, быстро обновляемой локальной среды разработки. Это позволяет избежать рисков, связанных с прямыми тестами сайта в реальных условиях (в сети).
Настройка локальной среды для разработки программного обеспечения
Рекомендуется использовать локальную серверную среду интеграции, такую как Local by Flywheel, XAMPP или Laragon. Эти инструменты позволяют одним кликом установить необходимые для работы с WordPress компоненты: PHP, MySQL и веб-сервер. Кроме того, вам понадобится кодовый редактор, например Visual Studio Code или PHPStorm, который обеспечивает выделение синтаксиса, предложения по редактированию кода и возможности отладки. Убедитесь, что используемая версия PHP совместима с вашим целевым сервером; обычно рекомендуется использовать версию PHP 7.4 или более новую.
Напишите и активируйте простой плагин.
Теперь давайте создадим первый функциональный плагин. /wp-content/plugins/ В каталоге создайте новую папку и назовите её… my-first-pluginВ этой папке создайте файл с названием… my-first-plugin.php Файл.
Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: создание вашего первого плагина с нуля до готового продукта.。
Копируйте информацию о заголовках плагинов, упомянутую в предыдущем разделе, в начало этого файла. Затем добавим простую функцию: автоматическое вставление пользовательского текста в конец содержимого статьи. Для этого потребуются хаки (“фильтры” – Filters) в WordPress. Добавьте следующий код под информацией о заголовках плагинов:
// 在文章内容后添加自定义文本
function myfp_add_footer_text( $content ) {
// 仅对主循环中的单篇文章生效
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>Спасибо за прочтение! Данная статья была подготовлена при поддержке проекта “Мой первый плагин” („My First Plugin“).</em></p>';
$content .= $custom_text;
}
return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'myfp_add_footer_text' ); После сохранения файла войдите в свой WordPress-бэкенд и перейдите на страницу “Плагины”. Там вы должны увидеть новый плагин с названием “Мой первый плагин”. Нажмите кнопку “Включить”. Теперь перейдите на страницу одной из статей на вашем сайте и обратите внимание: добавленный нами текст появился в конце содержимого статьи. Таким образом, ваш первый WordPress-плагин успешно запущен.
Овладение ключевыми технологиями разработки плагинов
Мощная расширяемость WordPress основана на нескольких ключевых концепциях: хуках (Hooks), API настройок (Options API), пользовательских типах статей (Custom Post Types, CPT) и операциях с базой данных. Овладение этими аспектами является основой для дальнейшего развития навыков программирования в WordPress.
Глубокое понимание механизмов работы хуков (hooks) для действий (actions) и фильтров (filters)
Система хуков (hooks) является основой для разработки плагинов для WordPress и включает в себя два типа элементов: действия (Actions) и фильтры (Filters). Действия-хуки запускаются в определенные моменты выполнения кода (например, при загрузке верхней части страницы или при сохранении статьи), что позволяет выполнять различные операции, такие как добавление меню или отправка электронных писем. add_action() Функция предназначена для монтирования (подключения) ресурсов.
Например, добавьте страницу в меню административного управления.
function myfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'myfp-settings', // 菜单slug
'myfp_settings_page', // 回调函数,用于显示页面内容
'dashicons-admin-generic', // 图标
20
);
}
add_action( 'admin_menu', 'myfp_add_admin_menu' ); Фильтровые хаки позволяют вам “изменять” данные. Они блокируют их перед тем, как данные будут использованы (например, отображены в браузере или сохранены в базе данных), и вы можете изменить их, а затем вернуть новые значения. Мы использовали их в нашем первом плагине. the_content Это просто фильтрующий хук (filter hook).
Рекомендуемое чтение Детальный анализ WooCommerce: полное руководство по созданию высокопроизводительного сайта электронной коммерции с нуля.。
Использование API параметров для хранения настроек плагина
Плагины обычно требуют сохранения некоторых настроек, таких как ключи API, состояние включения/выключения функций и т. д. WordPress предоставляет для этого соответствующие инструменты и механизмы. Options API Для удобной обработки таких данных используются следующие основные функции: add_option(), get_option(), update_option() и delete_option()。
Создайте простую страницу настройок для использования этих функций. Сначала определите функции, которые будут вызываться при выборе пунктов меню. myfp_settings_page Чтобы отобразить форму:
function myfp_settings_page() {
?>
<div class="wrap">
<h1>Настройки моего плагина.</h1>
<form method="post" action="/ru/options.php/" data-trp-original-action="options.php">
<?php
settings_fields( 'myfp_settings_group' ); // 输出安全字段
do_settings_sections( 'myfp-settings' ); // 输出设置部分
submit_button(); // 输出提交按钮
?>
<input type="hidden" name="trp-form-language" value="ru"/></form>
</div>
<?php
} Затем вам необходимо использовать… register_setting(), add_settings_section() и add_settings_field() Для объявления и инициализации этих параметров используются такие функции, как… Этот процесс обеспечивает безопасное сохранение данных. wp_options В таблице.
Создание полноценного практического примера плагина
Мы объединим знания, полученные ранее, чтобы создать немного более сложный, но полезный плагин – плагин для оценки времени, необходимого на прочтение статьи. Он будет отображать предполагаемое время прочтения статьи под её заголовком.
Создание основного файла плагина и функциональных методов
Создать новую папку для плагинов. post-reading-time И главный файл post-reading-time.phpНеобходимо заполнить стандартную информацию о заголовке плагина. Затем мы создадим основные функции для расчета времени прочтения.
function prt_calculate_reading_time( $post_id ) {
// 获取文章内容
$content = get_post_field( 'post_content', $post_id );
// 清除HTML标签和短代码,只计算文字
$text = strip_tags( strip_shortcodes( $content ) );
// 计算字数(中英文混合场景的简单处理)
$word_count = mb_strlen( $text, 'UTF-8' );
// 假设平均阅读速度为每分钟300字(可根据需要调整)
$reading_speed = 300;
// 计算分钟数,至少1分钟
$minutes = floor( $word_count / $reading_speed );
if ( $minutes < 1 ) {
$minutes = 1;
}
// 返回包含时间的字符串
return sprintf( _n( '约 %d 分钟读完', '约 %d 分钟读完', $minutes, 'post-reading-time' ), $minutes );
} Отображение информации на пользовательском интерфейсе (фронтенде) с интеграцией с системой управления на серверной стороне (бэкенде)
Далее нам нужно решить, как отобразить это время. Распространенным способом является его добавление в метаданные статьи (под заголовком). the_content Определенные хэнги (hooks), предоставляемые фильтрами или темами. В данном случае мы используем более подходящий хэнг для выполнения определенных действий. thesis_hook_before_post(В зависимости от темы) или, более универсальным способом, напрямую фильтровать содержимое статей.
Для большей гибкости мы создали шорткод (Shortcode) и небольшой инструмент (Widget), а также предоставили простой параметр настройки, позволяющий контролировать автоматическое отображение этих элементов.
Во-первых, зарегистрируйте короткий код:
function prt_reading_time_shortcode( $atts ) {
$atts = shortcode_atts( array(
'id' => get_the_ID(),
), $atts, 'reading_time' );
$time_text = prt_calculate_reading_time( $atts['id'] );
return '<span class="reading-time">'. $time_text . '</span>'add_shortcode( 'reading_time', 'prt_reading_time_shortcode' ); Затем мы можем автоматически добавить полученный результат в начало текста статьи (с помощью фильтра):
function prt_prepend_to_content( $content ) {
if ( is_single() && get_option( 'prt_auto_display', '1' ) == '1' ) {
$time_html = '<div class="post-reading-time">' . prt_calculate_reading_time( get_the_ID() ) . '</div>';
$content = $time_html . $content;
}
return $content;
}
add_filter( 'the_content', 'prt_prepend_to_content' ); Вам также необходимо создать параметр настройки в бэкенде. prt_auto_displayПользователи могут выбрать, хотят ли они включить функцию автоматического отображения данных. Таким образом, плагин с полноценным функционалом и четкой структурой готов к использованию.
резюме
Начав с изучения основной архитектуры плагинов и информации, содержащейся в их заголовочных файлах, мы постепенно настроили среду разработки и создали первый простой функциональный плагин. Глубоко изучив ключевые аспекты расширяемости WordPress — систему хуков (hooks) — мы научились вмешиваться в процесс выполнения кода и изменять данные без необходимости модификации основного кода системы. С помощью API Options мы смогли создать для плагина персистентные настройки (настройки, сохраняющиеся между запусками программы). Наконец, создав полноценный пример плагина для оценки времени прочтения статей, мы соединили теоретические знания с практикой, охватив весь процесс разработки: от написания логики функций и создания шаблонов кода до интеграции плагина с пользовательским интерфейсом. Помните: качественная разработка плагинов начинается с четкого планирования, соблюдения стандартов кодирования WordPress, а также с учета аспектов безопасности, производительности и пользовательского опыта.
Часто задаваемые вопросы
Какие знания необходимы для разработки плагинов для WordPress?
Вам потребуется прочная база знаний PHP, поскольку код плагинов в основном написан на этом языке. Кроме того, необходимо иметь базовое понимание HTML, CSS и JavaScript для работы с визуальным представлением и интерактивностью сайта. Знакомство с основными концепциями MySQL поможет лучше понять способы хранения и поиска данных в WordPress. Самое важное — привыкнуть читать официальное руководство по разработке WordPress (Codex) и справочник для разработчиков (Developer Reference).
Как обеспечить безопасность плагина, который я разрабатываю?
Безопасность имеет первостепенное значение. Всегда проверяйте и обрабатывайте данные, вводимые пользователями (включая их очистку от вредоносных элементов), а также обеспечивайте правильную форматизацию выводимой информации (эскапирование символов). Используйте механизмы, предоставляемые WordPress (в частности, нестандартные значения типа nonce) для предотвращения подделки запросов между веб-серверами (CSRF – Cross-Site Request Forgery). При формировании запросов к базе данных обязательно соблюдайте все соответствующие правила и рекомендации. $wpdb Методы, предоставляемые классом (например…) prepare()Используйте механизмы защиты от SQL-инъекций для предотвращения угроз безопасности. Избегайте применения небезопасных функций. eval()Регулярно обновляйте свои плагины, чтобы устранять известные уязвимости.
Куда следует разместить плагины?
Плагины для WordPress должны быть размещены на сайте в определенных местах (обычно в папке с плагинами или в соответствующем разделе конфигурационного файла сайта). /wp-content/plugins/ Файлы плагина можно разместить непосредственно в корневой директории каталога, но более стандартным подходом является создание отдельной поддиректории для каждого плагина, в которую будут помещены все соответствующие файлы (PHP-код, JS-файлы, CSS-файлы, изображения и т. д.). Такой подход позволяет сохранить четкую структуру файлов и избежать конфликтов с другими плагинами.
Как добавить страницу настроек для моего плагина?
Для добавления страницы настроек для плагина обычно требуется выполнение нескольких шагов: в первую очередь, используется… add_action( ‘admin_menu’, ‘your_function’ ) Хук регистрирует новый пункт меню управления или подменю. Затем, в функции обратного вызова, выводится HTML-форма страницы. Далее используется… register_setting()、add_settings_section() и add_settings_field() Используйте функции API для настройок (Settings API), чтобы объявить и связать свои поля настроек. Это позволит автоматически обрабатывать проверку прав доступа, проверку на соответствие стандартам CE (Common Encryption), а также сохранение выбранных параметров. В конце концов, используйте эти функции в формах. settings_fields() и do_settings_sections() Функция предназначена для вывода необходимых полей.
Что такое хаки (hooks), и почему они настолько важны?
Хаки (hooks) – это специальные точки в коде основной версии WordPress, которые позволяют плагинам и темам встраиваться в процесс выполнения основных функций системы. Они делятся на хаки действий (Actions) и хаки фильтров (Filters). Хаки действий выполняют ваш собственный код при наступлении определенных событий, что используется для добавления новых функций. Хаки фильтров позволяют изменять данные перед их использованием или сохранением. Система хаков является ключевым элементом расширяемости WordPress; благодаря ей разработчики могут значительно изменять или улучшать поведение системы без необходимости модификации исходного кода, что обеспечивает ее чистоту и совместимость с последующими обновлениями.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Полное руководство по созданию сайтов на платформе WooCommerce: с нуля создайте свой собственный онлайн-магазин
- Подробный анализ WooCommerce: создание мощного электронного магазина на WordPress с нуля
- Полное руководство по оптимизации производительности WordPress: ускорение работы системы с самого ядра до фронтенда
- Как установить и настроить SSL-сертификат для вашего веб-сайта на WordPress?
- Руководство по настройке оптимизации кэширования всего сайта в WooCommerce: повышение скорости и конверсии электронных магазинов на базе WordPress