Зачем нужно разрабатывать пользовательские плагины?
WordPress известен своей высокой расширяемостью, и одной из ключевых особенностей этой системы является система плагинов. Когда потребности сайта в функциях превышают возможности предустановленных тем или существующих плагинов, разработка собственных решений становится наилучшим вариантом. Это позволяет более гибко адаптировать сайт под конкретные задачи, не внося изменений в саму тему. functions.php По сравнению с созданием отдельных файлов, создание независимого плагина имеет ряд значительных преимуществ. Плагин отделен от основной темы сайта, что означает, что его функции сохраняются при смене темы, обеспечивая тем самым независимость и удобство обслуживания плагина. Кроме того, хорошо структурированный плагин может быть легко перенесен на другие сайты и использован повторно, а также распространен через официальные или сторонние каналы.
Разработка собственных плагинов позволяет точно контролировать логику функций, избегая накопления избыточных общедоступных плагинов, которые могут снижать производительность и вызывать конфликты между их кодами. От простого генерирования коротких кодов до сложной обработки данных и управления рабочими процессами – разработка плагинов открывает перед вами возможности для глубокой настройки функционала WordPress.
Создание базовой структуры вашего первого плагина
В сущности, плагин для WordPress представляет собой один или несколько файлов, расположенных в определенной директории сайта. wp-content/plugins/ PHP-файлы, находящиеся в каталоге. Первым шагом при создании плагина является создание его базовой структуры.
Рекомендуемое чтение Руководство по разработке плагинов для WordPress: с нуля до создания вашего первого функционального плагина。
Создание основного файла плагина и добавление заголовочных комментариев
Во-первых, в wp-content/plugins/ Создайте новую папку в каталоге, например, my-first-pluginЗатем внутри этой папки создайте основной PHP-файл, который, как правило, носит то же имя, что и папка.my-first-plugin.php。
В начале файла обязательно должны быть присутствовать комментарии с информацией о плагине, соответствующие стандартам WordPress. Эти комментарии играют ключевую роль в распознавании плагина системой WordPress; они содержат основную информацию о плагине и отображаются на странице управления плагинами в административной панели.
<?php
/**
* Plugin Name: 我的第一个自定义插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习的 WordPress 自定义插件示例。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ После сохранения файла войдите в интерфейс WordPress через веб-браузер, перейдите на страницу “Плагины” (Plugins). Там вы увидите плагин с названием “Мой первый пользовательский плагин” (My First Custom Plugin) в списке доступных плагинов. Вы сможете активировать или деактивировать этот плагин. На данный момент у него нет никаких функций.
Создание безопасной оболочки для функций плагина
Чтобы избежать конфликтов между именами функций и названиями тем или других плагинов, рекомендуется объединять все функции в один класс или добавлять к ним уникальные префиксы. В данном случае мы используем подход с использованием классов, поскольку это обеспечивает лучшую защиту кода от внешних воздействий и улучшает его структуру.
В главном файле, после заголовочных комментариев, мы можем начать определять основной класс плагина.
Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: Создайте свой первый функциональный плагин с нуля。
if ( ! defined( 'ABSPATH' ) ) {
exit; // 防止直接访问文件
}
class My_First_Plugin {
/**
* 构造方法,用于初始化插件
*/
public function __construct() {
// 初始化钩子
$this->init_hooks();
}
/**
* 初始化 WordPress 钩子(动作和过滤器)
*/
private function init_hooks() {
// 后续的钩子将在这里添加
}
}
// 初始化插件
new My_First_Plugin(); Через if ( ! defined( 'ABSPATH' ) ) В этом коде мы обеспечили, чтобы к этому файлу можно было получить доступ только из среды WordPress, тем самым повысив уровень безопасности. Теперь базовая структура плагина готова к использованию.
Расширение основных функций WordPress с помощью хуков
Ядро API плагинов WordPress основано на так называемых “хаках” (Hooks), которые позволяют выполнять пользовательский код в определенные моменты времени или над конкретными данными. Хаки делятся на два типа: действия (Actions) и фильтры (Filters).
Понять и добавить простой хук для действий.
Акционные хуксы выполняют ваш код при наступлении определенных событий, например, при публикации статьи или загрузке страницы управления. Они не возвращают никаких значений, а просто выполняют свои задачи.
Давайте добавим такую функцию: автоматически вставлять в конец каждой статьи пользовательский текст. Для этого мы будем использовать… the_content Этот фильтр (да, хотя он и называется фильтром, на самом деле он часто используется для добавления контента; технически это действительно фильтр, поскольку он принимает и возвращает данные). Однако, чтобы сначала продемонстрировать простое действие, мы также добавим функцию отображения сообщений в панели управления в бэкэнде.
Во-первых, в init_hooks Добавьте хук для регистрации в методе:
private function init_hooks() {
// 在文章内容末尾添加信息的过滤器
add_filter( 'the_content', array( $this, 'append_custom_text' ) );
// 在管理栏添加节点的动作
add_action( 'admin_bar_menu', array( $this, 'add_admin_bar_node' ), 999 );
} Затем в классе определите соответствующие методы обратного вызова (callback methods).
Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: от основ до создания собственных функций。
/**
* 在文章内容末尾添加自定义文本(过滤器回调)
*
* @param string $content 原始文章内容。
* @return string 修改后的文章内容。
*/
public function append_custom_text( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>Техническая поддержка для этого текста предоставляется проектом “Мой первый плагин” («My First Plugin»).</em></p>'Функция add_admin_bar_node добавляет пользовательский узел (кнопку) в административную панель WordPress.
@param WP_Admin_Bar $wp_admin_bar Объект административной панели WordPress.
*/
public function add_admin_bar_node( WP_Admin_Bar $wp_admin_bar ) {
$args = array(
'id' => 'my_plugin_node',
'title' => 'Мой плагин',
'href' => admin_url( 'plugins.php' ),
'meta' => array( 'class' => 'my-plugin-node' )
);
$wp_admin_bar->add_node( $args );
} Теперь, после активации плагина, добавленный текст будет отображаться внизу каждой статьи на пользовательской странице, а в верхней панели управления на серверной стороне появится пункт меню “Мои плагины”.
Использование фильтров для изменения формата вывода данных
Фильтры используются для изменения данных, передаваемых в определенный момент. Они принимают значение и должны возвращать измененное значение. Мы использовали их ранее. append_custom_text Метод, по сути, представляет собой функцию-обратный вызов (callback) фильтра. Давайте создадим ещё один более типичный пример использования фильтра: изменение длины резюме статьи.
В init_hooks Добавьте следующее в текст:
add_filter( 'excerpt_length', array( $this, 'custom_excerpt_length' ), 999 ); Затем определяем метод обратного вызова (callback method):
/**
* 修改文章摘要的默认字数长度
*
* @param int $length 默认的摘要长度。
* @return int 修改后的摘要长度。
*/
public function custom_excerpt_length( $length ) {
// 将摘要长度设置为 30 个字
return 30;
} Реализация страницы настроек плагина с возможностью конфигурирования параметров
Для того чтобы плагины были более гибкими, обычно необходимо предоставить пользователям страницу настроек. WordPress предлагает “API настроек” для безопасного и стандартизированного создания таких страниц.
Создание меню управления и вспомогательных страниц
Во-первых, нам необходимо добавить пункт меню в интерфейс администрирования WordPress. Для этого мы будем использовать… add_options_page Функция добавляет подстраницу в главное меню “Настройки”.
В init_hooks Добавьте действие в…
add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) ); Определение метода добавления меню:
/**
* 向 WordPress 后台添加插件设置页面
*/
public function add_plugin_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单 Slug
array( $this, 'display_plugin_admin_page' ) // 回调函数
);
} Использование API настроек для регистрации и отображения полей
Далее нам необходимо определить… display_plugin_admin_page Методы для отображения содержимого страницы, а также для регистрации настроек, полей и разделов.
Во-первых, необходимо добавить ещё один хук для регистрации настроек:
add_action( 'admin_init', array( $this, 'register_plugin_settings' ) ); Затем реализуйте соответствующие методы:
/**
* 使用 WordPress 设置 API 注册设置、字段和章节
*/
public function register_plugin_settings() {
// 注册一个设置,存储到一个选项 `my_first_plugin_options`
register_setting(
'my_first_plugin_options_group', // 选项组名
'my_first_plugin_options' // 选项名
);
// 添加一个设置章节
add_settings_section(
'my_first_plugin_main_section', // 章节 ID
'主要设置', // 章节标题
array( $this, 'render_section_description' ), // 章节描述回调
'my-first-plugin' // 页面 Slug
);
// 向章节中添加一个文本字段
add_settings_field(
'custom_text_field', // 字段 ID
'自定义文本', // 字段标题
array( $this, 'render_text_field' ), // 字段渲染回调
'my-first-plugin', // 页面 Slug
'my_first_plugin_main_section' // 所属章节 ID
);
}
/**
* 渲染设置章节的描述文字
*/
public function render_section_description() {
echo '<p>Здесь вы можете настроить параметры вашего первого плагина.</p>';
}
/**
* 渲染自定义文本输入字段
*/
public function render_text_field() {
$options = get_option( 'my_first_plugin_options' );
$value = isset( $options['custom_text_field'] ) ? $options['custom_text_field'] : '';
echo '<input type="text" name="my_first_plugin_options[custom_text_field]" value="' . esc_attr( $value ) . '" class="regular-text" />'echo '<p class="description">Текст, введённый здесь, будет отображен в конце статьи.</p>'/**
* Отображение основного содержания страницы управления плагинами.
*/
public function display_plugin_admin_page() {
// Проверка прав пользователя
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( 'my_first_plugin_options_group' );
do_settings_sections( 'my-first-plugin' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="ru"/></form>
</div>
<?php
} В заключение нам необходимо внести изменения в предыдущий код. append_custom_text Метод для чтения текста, сохраненного пользователем, из предоставленных опций:
public function append_custom_text( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$options = get_option( 'my_first_plugin_options' );
$custom_text = isset( $options['custom_text_field'] ) && ! empty( $options['custom_text_field'] ) ?
'<p><em>'`. esc_html($options['custom_text_field'])`.'</em></p>' :
'<p><em>Техническая поддержка для этого текста предоставляется проектом “Мой первый плагин” («My First Plugin»).</em></p>';
$content .= $custom_text;
}
return $content;
} Теперь пользователи могут настроить текст, который отображается в конце статей, на странице “Настройки” → “Мои плагины”.
резюме
С помощью этого руководства мы полностью прошли основной процесс разработки пользовательского плагина для WordPress: от создания базовой структуры файлов и безопасной оболочки кода до глубокого понимания и использования ключевых механизмов расширений WordPress — действий (actions) и фильтров (filters). В итоге мы создали конфигурируемый плагин, включающий страницу настроек в бэкенде. Мы также показали, как правильно использовать API настроек WordPress для создания страниц с параметрами, что обеспечивает безопасное хранение данных и согласованность интерфейса.
Овладение этими основными знаниями является важным шагом на пути к разработке более сложных плагинов. В дальнейшем вы сможете изучить более продвинутые темы, такие как настройка пользовательских таблиц баз данных, создание шорткодов, добавление вспомогательных инструментов (виджетов), написание REST-сервисов и реализация интеракций с использованием технологии AJAX. Помните, что хорошая организация кода, строгие меры безопасности (проверка пользовательских прав, очистка и экранирование данных) и соблюдение стандартов кодирования WordPress являются ключевыми факторами для создания качественных и удобных в обслуживании плагинов.
Часто задаваемые вопросы
Какие знания необходимы для разработки плагинов?
Вам потребуются базовые знания языка программирования PHP, включая его синтаксис, переменные, функции, классы и объекты. Также будет полезно иметь представление об HTML, CSS и JavaScript, особенно при создании плагинов, включающих элементы взаимодействия с пользователем на стороне клиента или сложные интерфейсы на стороне сервера. Кроме того, необходимо знать основы работы и архитектуры системы WordPress.
Как отладить плагин, который находится в процессе разработки?
Во-первых, убедитесь, что у вас… wp-config.php В документе будет указано, что... WP_DEBUG Установить как trueЭто включит функцию отчетов об ошибках в WordPress. Используйте инструменты разработчика в браузере (вкладки Console и Network) для проверки ошибок JavaScript и сетевых запросов. Что касается кода на PHP, то для его анализа также могут быть использованы соответствующие инструменты или методы отладки. error_log() Функция записывает значения переменных или другую информацию в лог-файлы сервера, предназначенные для отладки, или использует специализированные отладочные инструменты для отслеживания хода выполнения кода и изменений в значениях переменных.
Можно ли просто перенести код файла functions.php из основной темы в плагин?
Во многих случаях это возможно, однако необходимо обратить внимание на проблемы с ссылками на пути и URL-адреса. Использование таких ссылок в тексте темы допустимо. get_template_directory_uri() Чтобы получить URI к каталогу тем, в плагине следует использовать другой подход. plugin_dir_url(FILE)Аналогично, функция для получения пути к каталогу тем. get_template_directory() Также следует заменить на элементы плагина (plugins). plugin_dir_path(FILE)Кроме того, необходимо убедиться, что все функции в коде надлежащим образом организованы в классах или функциях с префиксами, чтобы избежать конфликтов.
Что следует учитывать при разработке коммерческих плагинов?
При разработке коммерческих плагинов, предназначенных для распространения, необходимо уделять особое внимание качеству кода, безопасности и расширяемости. Также необходимо тщательно подготовиться к международному и локальному использованию (с использованием соответствующих инструментов и подходов). __()、_e() Для перевода необходимо предоставить код (функции и текстовые поля). Код должен соответствовать стандартам кодирования WordPress. Необходимо учитывать лицензию (обычно GPL) и механизм последующих обновлений. Также крайне важно предоставить четкую и подробную документацию по использованию плагина и каналы технической поддержки. В экосистеме 2026 года обеспечение совместимости плагина с новыми версиями WordPress, PHP, а также популярными темами и другими плагинам является важной частью постоянного обслуживания.
Как добавить многоязычную поддержку для плагина?
WordPress использует технологию GNU gettext для интернационализации (i18n). Во-первых, все строки, требующие перевода в плагине, должны быть обернуты в специальную функцию, например: __('文本', 'my-first-plugin') Используется для возврата перевода._e('文本', 'my-first-plugin') Используйте его для вывода перевода. Затем с помощью такого инструмента, как Poedit, просканируйте исходный код плагина и создайте его перевод. .pot Шаблон документа. Переводчик создает перевод на соответствующий язык на основе этого шаблона. .po Преобразовать файл и скомпилировать его в машиночитаемый формат. .mo В конце концов, необходимо передать файл. load_plugin_textdomain() Функция интегрирована в код инициализации плагина для загрузки файлов с переводами по правильному пути.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Как выбрать и настроить идеальную тему для WordPress, подходящую именно вам?
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- От нуля до один: Полное руководство и практические советы по созданию профессиональных сайтов с использованием WordPress
- Полное руководство по разработке плагинов для WordPress: от основ до мастерства создания профессиональных расширений