Руководство по разработке плагинов для WordPress: Создание вашего первого пользовательского плагина с нуля

3-минутное чтение
2026-03-15
2026-06-03
2,824
Я получаю комиссионные, когда вы совершаете покупки по ссылкам ниже, без дополнительных затрат для вас.

Зачем разрабатывать собственные плагины для WordPress?

В экосистеме WordPress плагины играют ключевую роль в расширении функционала веб-сайтов. Хотя на рынке доступно тысячи плагинов на выбор, разработка собственных плагинов предоставляет ряд уникальных преимуществ. Во-первых, это позволяет реализовать функции, идеально соответствующие конкретным потребностям пользователя, избегая избыточного кода или ненужных функций, характерных для стандартных плагинов. Во-вторых, собственные плагины могут быть тесно интегрированы с используемым тематическим дизайном или другими пользовательскими модификациями кода, что обеспечивает лучшую совместимость и производительность сайта. Кроме того, разделение бизнес-логики на отдельные модули (плагины) от кода темы является одной из основных рекомендаций по разработке в WordPress. Благодаря этому даже при смене темы основные функции сайта останутся доступны, что повышает его удобство обслуживания.

Для разработчиков изучение создания плагинов является отличным способом глубоко понять архитектуру WordPress. Вы познакомитесь с такими концепциями, как хэнги действий (action hooks).add_actionФильтровые хаки (filter hooks)add_filterКраткие коды (short codes)add_shortcodeТакие ключевые концепции, как… Овладение этими знаниями позволит вам не только создавать собственные плагины, но и более эффективно настраивать существующие темы и плагины.

Настройка среды и подготовительные работы перед началом разработки

Прежде чем начать писать первую строку кода, крайне важно создать подходящую среду разработки. Это не только повысит эффективность работы, но и поможет избежать ошибок.

Рекомендуемое чтение Введение в разработку плагинов для WordPress: от основ до мастерства: обмен практическим опытом и ключевыми навыками

Создайте локальную среду разработки

Рекомендуется использовать программное обеспечение для локальных серверов, такое как Local by Flywheel, XAMPP или MAMP. С их помощью можно быстро настроить на своем компьютере среду для работы с WordPress, включающую сервер Apache, базу данных MySQL и язык программирования PHP. По сравнению с онлайн-серверами, локальное развитие позволяет быстро тестировать и настраивать код, не опасаясь влияния на работу веб-сайта в реальном времени.

Ультахост (UltaHost) – хостинг-провайдер, предоставляющий услуги хостинга для сайтов, построенных на платформе WordPress.
Гарантия возврата средств в течение 30 дней, неограниченная пропускная способность интернет-канала и объем баз данных, бесплатная защита от DDoS-атак. При покупке на срок 3 лет предоставляется скидка в размере 501 ТБ до 4 ТБ.

После установки WordPress на вашем компьютере вам потребуется…wp-content/pluginsВнутри каталога создайте специальную папку для вашего нового плагина. Рекомендуется использовать краткое, небольшое название на английском языке, без пробелов. Например:my-first-plugin

Ознакомление с основной структурой плагинов

Самый простой плагин для WordPress может состоять всего из одного основного файла. Этот файл должен содержать специальные заголовочные комментарии, с помощью которых WordPress определяет информацию о плагине. Также необходимо внедрить меры безопасности для защиты от прямого доступа к файлам плагина; это обычно достигается путем проверки пользовательских учетных данных.ABSPATHОпределяются ли константы с целью их использования в программе?

Вот пример минимизированного основного файла плагина; его можно назвать, например, `plugin.min.js`.my-first-plugin.phpИ поместите его в только что созданный папку:

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个用于学习的入门级WordPress插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 */

// 防止直接访问此文件
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

Поместите папку, содержащую этот файл, в нужное место.wp-content/pluginsПосле добавления плагина в каталог вы сможете увидеть его на странице “Плагины” в области управления WordPress и активировать его.

Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: создание собственных функций и расширений с нуля

Создание первой ключевой функции

Теперь давайте добавим к плагину некоторые практические функции. Мы создадим простую функцию, которая автоматически вставляет пользовательский текст в конец содержимого статьи.

Использование фильтров для изменения содержимого статьи

WordPress предоставляет множество фильтровых хуков (Filter Hooks), которые позволяют изменять данные перед их сохранением в базу данных или отображением в браузере. Чтобы изменить содержимое статьи, мы можем воспользоваться одним из этих хуков.the_contentФильтр.

В вашем основном файле плагина, после активации соответствующих хуков, добавьте следующие функции и их вызовы:

hosting.com Общий хостинг
Высокая производительность благодаря процессорам AMD EPYC, SSD-накопителям NVMe и LiteSpeed, круглосуточная экспертная поддержка, передовые меры безопасности, включая SSL, защиту от грубой силы, вредоносных программ и DDoS, экономия до 73%
// 定义向文章内容追加文本的函数
function my_first_plugin_add_text_to_content( $content ) {
    // 确保只在主循环的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $additional_text = '<p><em>Спасибо, что прочитали эту статью! Она была подготовлена при поддержке проекта “Мой первый плагин” („My First Plugin“).</em></p>';
        $content .= $additional_text;
    }
    return $content;
}
// 将函数挂载到‘the_content’过滤器上
add_filter( 'the_content', 'my_first_plugin_add_text_to_content' );

Эта функция сначала выполняет ряд условных проверок, чтобы убедиться, что дополнительный текст отображается только на страницах отдельных статей и не влияет на главную страницу, страницы архива или другие страницы сайта. Затем она добавляет пользовательский HTML-отрывок к исходному содержимому статьи.$contentЗатем изменяемое значение возвращается.

Создание простой страницы для настройки управления

Чтобы пользователи могли самостоятельно задавать текст, который нужно добавить, нам необходимо создать соответствующий параметр настроек. Для этого потребуется добавить пункт меню и страницу настроек в административную панель WordPress.

Во-первых, используйтеadd_actionВ меню администратора необходимо добавить подменю.

Рекомендуемое чтение Освоение разработки плагинов для WordPress: создание вашего первого пользовательского плагина с нуля

// 创建管理菜单
function my_first_plugin_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',     // 所需权限
        'my-first-plugin',    // 菜单slug
        'my_first_plugin_settings_page' // 显示页面的回调函数
    );
}
add_action( 'admin_menu', 'my_first_plugin_add_admin_menu' );

Далее определяется функция-обратный вызов (callback), которая отвечает за отображение страницы настроек.my_first_plugin_settings_pageКроме того, необходимо обработать логику сохранения формы.

// 设置页面的HTML内容
function my_first_plugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h2>Настройки моего первого плагина</h2>
        <form method="post" action="/ru/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'my_first_plugin_settings_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

// 注册设置、区域和字段
function my_first_plugin_settings_init() {
    register_setting( &#039;my_first_plugin_settings_group&#039;, &#039;my_first_plugin_custom_text&#039; );

add_settings_section(
        &#039;my_first_plugin_section&#039;,
        &#039;自定义文本设置&#039;,
        null,
        &#039;my-first-plugin&#039;
    );

add_settings_field(
        &#039;my_first_plugin_text_field&#039;,
        &#039;要在文末添加的文本&#039;,
        &#039;my_first_plugin_text_field_render&#039;,
        &#039;my-first-plugin&#039;,
        &#039;my_first_plugin_section&#039;
    );
}
add_action( &#039;admin_init&#039;, &#039;my_first_plugin_settings_init&#039; );

// 渲染文本输入字段
function my_first_plugin_text_field_render() {
    $option = get_option( &#039;my_first_plugin_custom_text&#039;, &#039;感谢您阅读这篇文章!本文由“我的第一个插件”提供支持。&#039; );
    echo &#039;<textarea name="my_first_plugin_custom_text" rows="3" cols="50">' . esc_textarea( $option ) . '</textarea>';
}

В конце измените функцию, которая ранее добавляла текст, так чтобы она работала на основе выбранных пользователем опций.my_first_plugin_custom_textЧтение содержимого из…

Общий хостинг InterServer
Общий хостинг $2.50 USD в месяц, первый месяц $0.1 USD промо-код tryinterserver, 461 скрипт облачных приложений, установка в один клик.
function my_first_plugin_add_text_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = get_option( 'my_first_plugin_custom_text', '' );
        if ( ! empty( $custom_text ) ) {
            $additional_text = '<p><em>'. wp_kses_post($custom_text)'.'</em></p>';
            $content .= $additional_text;
        }
    }
    return $content;
}

Подготовка плагинов к использованию с точки зрения безопасности, оптимизации и распространения

Квалифицированный плагин должен не только надлежащим образом выполнять свои функции, но и обеспечивать безопасность, высокую эффективность и удобство в обслуживании.

Проверка данных, их кодирование (эскапирование) и меры безопасности

Безопасность является основополагающим принципом при разработке плагинов. Никогда не доверяйте данным, введенным пользователями, или данным, полученным непосредственно из базы данных. Перед отображением данных на странице необходимо выполнить их обработку (эскапирование). В предыдущем коде мы использовали соответствующие механизмы для обеспечения безопасности.esc_textarea()На странице управления необходимо вывести данные в виде экранизированного (эскапированного) формата, используя соответствующие методы обработки текста.wp_kses_post()На странице статей необходимо фильтровать HTML-код, чтобы пропускались только безопасные теги, используемые в контенте постов. Для обработки форм следует использовать механизмы, предоставляемые WordPress, которые включают проверку вводимых данных, проверку пользовательских прав и другие меры безопасности.sanitize_text_field()Для очистки данных используются такие функции, как…

Организация кода и оптимизация производительности

По мере увеличения количества функций плагинов становится сложно управлять всем кодом, находящимся в одном главном файле. Более правильным подходом является разделение кода на отдельные файлы в зависимости от его функциональности. Например, вы можете создать…includes/admin/Каталог содержит весь код, связанный с интерфейсом администрирования.includes/public/Каталог содержит код, реализующий функционал фронтенда.includes/class-*.phpМесто для хранения определений классов.

С точки зрения производительности следует осторожно использовать хаки (специальные механизмы для обработки данных). Убедитесь, что функции, содержащиеся в этих хаках, выполняются только при необходимости (например, на основе условий). Для значений параметров, которые необходимо считать из базы данных и которые часто используются на клиентской стороне, их можно сохранить в глобальных переменных или в кэше объектов, чтобы избежать многократных запросов к базе данных.

Вы готовы к публикации своего плагина.

Если вы планируете выпустить плагин в официальный каталог плагинов WordPress или предоставить его для использования другими пользователями, вам необходимо улучшить несколько аспектов его кода. Во-первых, убедитесь, что информация, содержащаяся в заголовочных комментариях плагина, является полной и точной. Во-вторых, напишите четкое и понятное описание плагина.readme.txtФайл должен соответствовать официальным требованиям формата WordPress и включать описание функций плагина, инструкции по установке, ответы на частые вопросы пользователей и т. д. В конце необходимо провести тщательное тестирование плагина: проверить его совместимость с различными версиями PHP, версиями WordPress, а также с различными темами и другими популярными плагинами.

резюме

С помощью этого руководства мы полностью прошли процесс создания полнофункционального WordPress-плагина с интерфейсом для управления. Мы изучили основную структуру плагина, способы взаимодействия с ядром WordPress с использованием действий (actions) и фильтров (filters), а также методы создания страниц управления. Кроме того, мы получили представление о важности безопасности и организации кода плагина. Суть разработки плагинов заключается в понимании событийно-ориентированной архитектуры WordPress и в умении вставлять свой собственный код в нужные моменты работы системы. Исходя из этого, вы сможете изучить более сложные аспекты разработки, такие как пользовательские типы статей, метаданные, REST API-шлюзы и создание таблиц в базе данных, постепенно создавая мощные, профессиональные плагины.

Часто задаваемые вопросы

Для разработки плагинов для WordPress необходимы следующие основные знания:

Вам необходимо овладеть основной синтаксисом языка программирования PHP, концепциями объектно-ориентированного программирования, а также иметь базовые знания HTML, CSS и JavaScript. Будет очень полезно знать основы работы с WordPress и его ключевые понятия: статьи, страницы, категории. Самое важное – понимание механизма хуков (Actions and Filters) в WordPress, поскольку именно они обеспечивают взаимодействие плагинов с основной системой.

В чем разница между функциями плагинов и тем (тематик сайта)? Как правильно выбрать подходящий вариант?

Темы в основном отвечают за внешний вид и структуру сайта, в то время как плагины предназначены для добавления дополнительных функций. Существует хорошее правило: если функция тесно связана с визуальным представлением сайта, ее лучше включить в состав темы; если же речь идет о независимых функциях (например, форма для связи, оптимизация для поисковых систем, система электронной коммерции), их следует реализовывать в виде плагинов. Реализация функций в виде плагинов позволяет сохранить их при смене темы – это одна из основных практик разработки в WordPress.

Можно ли создать несколько PHP-файлов внутри одного плагина?

Конечно, это вполне возможно, и для сложных плагинов такой подход даже рекомендуется. Вы можете разделить различные функциональные модули на отдельные файлы, а затем использовать их в основном файле плагина.require_onceилиinclude_onceИспользуйте соответствующие инструкции и конструкции для организации кода. Хорошая структура файлов способствует его упорядоченности и улучшает взаимодействие в команде.

Как отладить плагин, который я разработал?

В разработке на WordPress для отладки часто используется функция, позволяющая включить отладочные сообщения.WP_DEBUGВы можете сделать это на сайте.wp-config.phpВ документе будет указано, что...define( 'WP_DEBUG', true );Это позволит отображать ошибки, предупреждения и уведомления PHP на экране. Более безопасным вариантом будет настройка обоих параметров одновременно.WP_DEBUG_LOGДля…trueЗаписать ошибку в…wp-content/debug.logФайл находится здесь. Кроме того, использование инструментов разработчика в браузере и таких дополнений для отладки, как Query Monitor, также значительно повышает эффективность работы.

Мой плагин должен быть совместим с самыми старыми версиями WordPress.

Это зависит от ваших целевых пользователей. Как правило, рекомендуется обеспечить совместимость как минимум с двумя предыдущими версиями основной действующей версии WordPress. Вы можете ознакомиться с официальными статистическими данными WordPress, чтобы узнать распределение пользователей по версиям. В коде вы можете использовать условные операторы для обработки различных ситуаций.function_exists()Чтобы проверить, доступна ли определённая функция или класс, и обеспечить таким образом совместимость с предыдущими версиями программы, используются специальные механизмы в плагинах.readme.txtВ файле необходимо четко указать версию WordPress, для которой тесты были проведены и результаты считаются успешными.