Подготовительные работы перед началом разработки
Прежде чем приступать к написанию кода, нам нужно убедиться, что среда разработки настроена правильно, и понять базовую структуру плагина WordPress. Подходящая локальная среда разработки — основа эффективной работы.
Создайте локальную среду разработки
Сначала вам потребуется локальная серверная среда для запуска WordPress. Рекомендуется использовать интегрированные инструменты, такие как XAMPP, MAMP или Local by Flywheel. После установки WordPress вы можете в wp-content/plugins Начните разработку своего плагина в этом каталоге. В этом каталоге хранятся все плагины, независимо от того, разработаны ли они вами или установлены из официального каталога.
Понять основные файлы плагина
Каждому плагину WordPress как минимум нужен один главный файл — это “удостоверение личности” и “запускатель” плагина, обычно он называется в соответствии с функцией плагина, например my-first-plugin.phpЭтот блок комментариев в верхней части главного файла крайне важен: он сообщает системе WordPress основную информацию об этом плагине.
Рекомендуемое чтение Разработка плагинов WordPress от новичка до мастера: пошаговое руководство по созданию вашего первого пользовательского плагина。
Создайте свой первый файл плагина.
Теперь давайте начнём с самой основы и создадим простой плагин с реальной функциональностью.
Написать комментарий заголовка плагина
В wp-content/plugins В каталоге создайте файл с названием… my-first-plugin новую папку. Затем создайте основной файл в этой папке my-first-plugin.phpВ самом начале этого файла вам нужно добавить комментарий с заголовком информации о плагине, соответствующий стандартам WordPress.
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个用于学习的简单插件,用于在文章末尾添加自定义文本。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Этот фрагмент кода сообщает WordPress, что это плагин, и определяет отображаемые в административном интерфейсе название, описание, версию и другую информацию. После сохранения файла войдите в административную панель WordPress, перейдите на страницу “Плагины”, и вы должны увидеть свой плагин в списке. Теперь вы можете активировать его, хотя у него пока ещё нет никаких функций.
Реализация базовой функции: фильтрация содержимого статей
После активации плагина нам нужно, чтобы он выполнил какое-то действие. Одной из распространенных базовых функций является изменение содержимого статей. Мы будем использовать эту функцию для… the_content Этот фильтр-хук автоматически добавляет фрагмент пользовательского текста в конце каждой статьи.
В главном файле… my-first-plugin.php Под заголовочными комментариями мы добавляем код, реализующий необходимые функции:
Рекомендуемое чтение Как создать профессиональную тему WordPress: полное руководство от нуля до запуска。
// 在文章内容末尾添加自定义文本
function myfp_add_custom_text_to_content( $content ) {
// 确保只在主循环的单篇文章页面添加
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><strong>Спасибо за прочтение! Данная статья была подготовлена при поддержке проекта “Мой первый плагин” („My First Plugin“).</strong></p>';
$content .= $custom_text;
}
return $content;
}
// 将我们的函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'myfp_add_custom_text_to_content' ); Этот код определяет объект с именем… myfp_add_custom_text_to_content функция. Она принимает содержимое статьи $content В качестве параметра с помощью условной проверки обеспечивается добавление текста только на странице отдельной записи во фронтенде сайта, чтобы это не применялось и на других страницах (например, на страницах списка). Затем к исходному содержимому добавляется пользовательский HTML-абзац и возвращается изменённое содержимое. Наконец, используя add_filter() Функция “подключает” эту пользовательскую функцию к ядру WordPress the_content к фильтру. Таким образом, каждый раз, когда WordPress готовится вывести содержимое записи, он сначала выполняет нашу функцию.
После сохранения файла перейдите на главную страницу сайта и откройте любую статью — вы увидите, что в нижней части страницы уже появился добавленный нами текст благодарности.
Добавить параметры управления для плагина
Полнофункциональному плагину обычно требуются некоторые параметры конфигурации, позволяющие пользователям выполнять настройки в панели управления. Мы добавим страницу настроек для только что созданной функции “Пользовательский текст”.
Создать меню управления плагинами
Сначала нам нужно добавить новый пункт меню в боковую панель управления в административной части WordPress. Для этого необходимо использовать WordPress add_action() Функции и admin_menu Крючок.
// 添加管理菜单
function myfp_add_admin_menu() {
add_options_page(
'我的第一个插件设置', // 页面标题
'我的插件设置', // 菜单标题
'manage_options', // 权限要求
'my-first-plugin', // 菜单 slug
'myfp_options_page_html' // 显示设置页面的回调函数
);
}
add_action( ‘admin_menu’, ‘myfp_add_admin_menu’ ); add_options_page() Функция создаст пункт подменю в главном меню “Настройки”. Для этого требуется несколько параметров: заголовок страницы, заголовок меню, права пользователя, уникальный идентификатор меню (slug), а также имя функции обратного вызова, используемой для вывода HTML-содержимого страницы настроек. myfp_options_page_html。
Создать страницу настроек и сохранить данные
Далее нам нужно определить функцию обратного вызова для отображения страницы настроек и обработки данных, отправленных пользователем.
Рекомендуемое чтение Самоучитель по разработке плагинов для WordPress: создайте свой первый плагин с нуля до единицы。
// 渲染设置页面的HTML
function myfp_options_page_html() {
// 检查用户权限
if ( !current_user_can( 'manage_options' ) ) {
return;
}
?>
<div class="“wrap”">
<h1></h1>
<form action="/ru/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
<?php
// 输出必要的安全字段
settings_fields( ‘myfp_settings’ );
// 输出设置区域
do_settings_sections( ‘my-first-plugin’ );
// 输出提交按钮
submit_button( ‘保存设置’ );
?>
<input type="hidden" name="trp-form-language" value="ru"/></form>
</div>
‘myfp_field_custom_text’ ]
);
}
add_action( ‘admin_init’, ‘myfp_settings_init’ );
// 渲染文本框的HTML
function myfp_field_custom_text_html() {
// 从数据库获取已保存的值
$options = get_option( ‘myfp_options’ );
$value = $options[‘myfp_field_custom_text’] ?? ‘’; // 使用空合并运算符,如果不存在则赋空值
?>
<input type="“text”"
id="“myfp_field_custom_text”"
name="“myfp_options[myfp_field_custom_text]”"
value="“NO NUMERIC NOISE KEY" 1000”
class="“regular-text”">
<?php
} Этот код выполняет register_setting、add_settings_section и add_settings_field и ряд других функций, с помощью Settings API WordPress корректно создали страницу настроек, содержащую одно текстовое поле ввода. Введённое пользователем содержимое будет безопасно сохранено в wp_options таблицы данных myfp_options Ведется запись.
Наконец, нам нужно изменить функцию, которая ранее фильтровала содержимое статьи, чтобы она использовала текст, полученный из базы данных, а не жёстко заданный текст.
function myfp_add_custom_text_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$options = get_option( ‘myfp_options’ );
$custom_text = $options[‘myfp_field_custom_text’] ?? ‘’;
if ( ! empty( $custom_text ) ) {
$content .= ‘<p><strong>’. esc_html($custom_text)‘.‘</strong></p>’;
}
}
return $content;
} Теперь пользователи могут ввести любой текст на странице “Настройки” → “Настройки моих плагинов”, сохранить его, и после этого текст будет отображаться в конце всех статей на сайте.
Продвинутые практики разработки плагинов и подготовка к их публикации
После завершения разработки базовых функций нам необходимо обсудить надежность и удобство обслуживания плагинов, а также способы их распространения среди других пользователей.
Добавить поддержку безопасности и интернационализации
Безопасность — это первостепенная задача при разработке плагинов. В приведённом выше примере мы уже использовали esc_html() и esc_attr() Используйте соответствующие функции WordPress для эскапирования выводимого текста, чтобы предотвратить атаки типа XSS. При обработке пользовательских вводов, выполнении запросов к базе данных или включении внешних файлов всегда следует применять функции безопасности, предоставляемые системой WordPress. wpdb->prepare()、sanitize_text_field() и check_admin_referer() и т.д.
Кроме того, для того чтобы плагин мог использоваться пользователями по всему миру, необходимо обеспечить его интернационализацию (i18n). Нам нужно обернуть все пользовательские строки в плагине функциями перевода, предоставляемыми WordPress. Для этого потребуется изменить наш предыдущий код.
1. Уже указано в комментарии в заголовке плагина Text Domain: my-first-plugin。
2. Загрузка текстовой области. Обычно добавляется внизу основного файла:add_action( ‘plugins_loaded’, function() { load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( FILE ) ) . ‘/languages/’ ); } );。
3. Оберните строку. Например, измените заголовок раздела настроек на ( ‘自定义文本设置’, ‘my-first-plugin’ ), изменить название меню на ( ‘我的插件设置’, ‘my-first-plugin’ )Таким образом, переводчики могут с помощью .po/.mo Файл предоставляет версии этих строк на других языках.
Подготовить плагин к публикации в официальном каталоге
Если вы хотите отправить плагин в официальный каталог плагинов WordPress.org, вам необходимо следовать ряду правил:
1. Стандарты кодирования: соблюдайте стандарты кодирования WordPress.
2. Структура файла: Помимо основного файла, обычно требуются ещё следующие элементы: README.txtОписание плагина: используется для создания страниц каталогов.uninstall.php(Обработка задач по очистке после удаления плагина) и т. д.
3. Репозиторий SVN: официальный каталог использует Subversion (SVN) для управления версиями, вам нужно отправить код вашего плагина в указанный репозиторий SVN.
4. Метаданные:README.txt Необходимо составить в соответствии с определённым форматом, включая название плагина, описание, способ установки, часто задаваемые вопросы, журнал обновлений и т. д.
резюме
С помощью этого руководства вы завершили полный цикл разработки плагина WordPress: от создания первого файла, написания комментария заголовка, реализации основной функциональности с помощью хуков действий и хуков фильтров до добавления для плагина настраиваемой страницы настроек, а также познакомились с более продвинутыми темами, такими как безопасность, интернационализация и подготовка к публикации. Этот плагин, добавляющий пользовательский текст в конце статьи, хотя и прост, охватывает самые основные концепции и процессы разработки плагинов. Освоив эти базовые знания, вы сможете, изучая обширную систему хуков (Hooks) WordPress, шорткоды (Shortcode), пользовательские типы записей (CPT) и REST API, создавать плагины со всё более мощной и сложной функциональностью. Помните, что практика — лучший способ обучения; попытки изменять код и добавлять новые функции являются ключом к закреплению знаний.
Часто задаваемые вопросы
Как должен называться основной файл плагина?
Для имени основного файла плагина нет строгих требований, но оно должно .php Окончание. Обычно для ясности и однозначности мы используем имя, совпадающее с названием папки плагина или описывающее функции плагина, например my-awesome-plugin.phpWordPress распознаёт плагины, считывая специальный блок комментариев в заголовке этого файла.
Почему мой плагин не отображается в меню панели управления?
Обычно это вызвано несколькими причинами. Во-первых, проверьте, был ли плагин успешно активирован. Во-вторых, проверьте add_menu_page() или параметр прав пользователя (capability) в аналогичных функциях, чтобы гарантировать, что у текущего вошедшего пользователя есть соответствующие права (например, manage_options)。Наконец, проверьте, правильно ли ваша функция проходит add_action(‘admin_menu’, …) Подключение. Любая синтаксическая ошибка PHP может привести к сбою инициализации всего плагина.
Как отладить ошибки PHP в плагинах?
На этапе разработки рекомендуется включить режим отладки в WordPress. Для этого откройте файл, находящийся в корневом каталоге веб-сайта… wp-config.php Убедитесь, что следующие настройки включены в файле:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true ); // 将错误记录到 /wp-content/debug.log
define( ‘WP_DEBUG_DISPLAY’, false ); // 不建议在页面上显示,以免破坏布局
Таким образом, сообщения об ошибках будут записываться в файлы журнала (логи), что облегчит поиск проблем. Перед публикацией плагина обязательно выключите режим отладки.
Где сохраняются данные параметров плагина?
Использование плагинов add_option() или update_option() Данные, сохраняемые функциями, по умолчанию хранятся в базе данных WordPress. wp_options в таблице (префикс таблицы может отличаться). Используйте get_option() Функции могут считывать эти данные. Для более сложных структур данных иногда также создают пользовательские таблицы базы данных, но это требует более осторожного подхода.
Как сделать так, чтобы мой плагин поддерживал несколько языков (интернационализацию)?
Вам нужно использовать функции перевода WordPress, чтобы обернуть все строки, видимые пользователю. Наиболее часто используемые — __(‘字符串’, ‘text-domain’) и _e(‘字符串’, ‘text-domain’)Затем с помощью таких инструментов, как Poedit, извлеките эти строки, сгенерируйте .pot Файл шаблона и создание соответствующего языка, например՝ zh_CN.po и .mo) файла перевода. Наконец, поместите языковой файл в каталог плагина /languages/ в папке и использовать при инициализации плагина load_plugin_textdomain() Функции загружают их.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- Полное руководство по разработке тем для WordPress: практический курс от начала до мастерства
- Полное руководство по разработке тем для WordPress: создание профессиональных шаблонов веб-сайтов с нуля
- Полное руководство по разработке плагинов для WordPress: от основ до мастерства создания профессиональных расширений