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

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

Основные концепции и подготовительные работы

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

Перед началом разработки вам понадобится стабильная локальная или тестовая серверная среда. Настоятельно рекомендуется установить программное обеспечение для локального сервера, такое как XAMPP, Local by Flywheel или DevKinsta. Кроме того, убедитесь, что у вас есть кодовый редактор (например, VS Code или PhpStorm) и что режим отладки в WordPress активирован. Это необходимо для успешного выполнения всех этапов разработки.wp-config.phpВ файле заданы некоторые константы:

define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );

ВключитьWP_DEBUG_LOGПосле этого информация об ошибке будет записана./wp-content/debug.logВ этом файле содержится информация, которая крайне важна для выявления проблем.

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

Создайте свой первый плагин.

Создайте плагин, начав с…/wp-content/plugins/Создайте в каталоге специальную папку, например…my-first-pluginВ этой папке вы должны создать основной PHP-файл, имя которого обычно совпадает с именем папки. Например:my-first-plugin.php

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

Напишите заголовок плагина.

Каждому плагину для WordPress необходимо наличие стандартного заголовочного комментария, который служит своего рода “идентификационным документом” плагина для системы WordPress. Этот комментарий должен находиться в начале основного файла плагина и быть написан в определенном формате.Plugin NameДругая информация, такая как описание продукта, версия, автор и т. д., также очень важна.

<?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, где будут отображаться указанные выше сведения.Text DomainиDomain PathЭто предназначено для интернационализации плагина (то есть для его адаптации к использованию на разных языках).

Реализация базовой функции

Теперь давайте добавим к плагину простую функцию: автоматическое вставление пользовательского текста в конец содержимого статьи. Для этого нам понадобятся “фильтры” (Filters) WordPress. Фильтры позволяют изменять данные перед их сохранением в базу данных или отображением в браузере.

Мы будем использовать…the_contentВ вашем основном файле плагина, после комментариев в начале файла, добавьте следующий код:

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

// 在文章内容末尾添加自定义文本
function myfp_add_text_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = ‘<p><em>Спасибо за прочтение этой статьи! Материал подготовлен при поддержке проекта “Мой первый плагин” („My First Plugin“).</em></p>’;
        $content .= $custom_text;
    }
    return $content;
}
add_filter( ‘the_content’, ‘myfp_add_text_to_content’ );

После сохранения файла перейдите в интерфейс WordPress и активируйте этот плагин. Когда вы будете просматривать отдельную статью, добавленный текст появится в конце её содержимого.myfp_add_text_to_contentЭто функция, которую мы сами определили; она принимает содержимое статьи в качестве входных данных.$contentПри соблюдении условий (речь идет о отдельной статье, которая обрабатывается в основном цикле) добавляется дополнительный текст, после чего возвращается измененный вариант содержимого.add_filter()Функция монтирует эту пользовательскую функцию на определённую позицию в системе.the_contentНа фильтре.

Использование хуков (hooks) и фильтров для создания интерактивных систем

Сила плагинов для WordPress заключается в их разнообразной системе хуков (hooks), которая делится на хуки действий (Action Hooks) и хуки фильтров (Filter Hooks). Хуки действий позволяют выполнять код в определенные моменты времени, в то время как хуки фильтров позволяют изменять данные.

Используйте действия-хаки (action hooks) для добавления меню управления.

Предположим, мы хотим добавить страницу настроек для нашего плагина, и для этого нам понадобятся действия-хаки (action hooks).admin_menuОно активируется при создании меню административной панели WordPress.

hosting.com Общий хостинг
Высокая производительность благодаря процессорам AMD EPYC, SSD-накопителям NVMe и LiteSpeed, круглосуточная экспертная поддержка, передовые меры безопасности, включая SSL, защиту от грубой силы, вредоносных программ и DDoS, экономия до 73%
// 添加插件设置页面到后台菜单
function myfp_add_admin_menu() {
    add_menu_page(
        ‘我的插件设置’,           // 页面标题
        ‘我的插件’,               // 菜单标题
        ‘manage_options’,       // 权限要求
        ‘myfp-settings’,        // 菜单slug
        ‘myfp_settings_page’,   // 用于显示页面内容的回调函数
        ‘dashicons-admin-generic’, // 图标(可选)
        80                      // 菜单位置
    );
}
add_action( ‘admin_menu’, ‘myfp_add_admin_menu’ );

// 定义设置页面的显示内容
function myfp_settings_page() {
    ?&gt;
    <div class="“wrap”">
        <h1><?php esc_html_e( ‘我的插件设置’, ‘my-first-plugin’ ); ?></h1>
        <p><?php esc_html_e( ‘这是你的第一个插件设置页面。’, ‘my-first-plugin’ ); ?></p>
        <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>
    &lt;?php
}

После активации плагина с левой стороны экрана в бэкграунде появится новый пункт меню “Мои плагины”. Нажав на него, вы перейдете на страницу с настройками плагина.add_menu_pageФункция играет ключевую роль: она зарегистрирует главную страницу меню.

Создание шорткодов для улучшения функционала страницы

Шорткоды (Shortcodes) – это мощный инструмент, позволяющий пользователям легко использовать функции плагинов в статьях или страницах. Вы можете их использовать для выполнения различных задач.add_shortcode()Функция для регистрации короткого кода.

// 创建一个显示当前时间的短代码
function myfp_current_time_shortcode( $atts ) {
    // 使用 shortcode_atts 设置默认属性并合并用户输入
    $attributes = shortcode_atts( array(
        ‘format’ =&gt; ‘Y-m-d H:i:s’,
    ), $atts );

// 根据属性格式化当前时间
    $current_time = date( $attributes[‘format’] );

// 返回要显示的内容,确保进行转义
    return ‘<p>Текущее время: ’. esc_html($current_time).‘</p>’add_shortcode( ‘show_time’, ‘myfp_current_time_shortcode’ );

Теперь пользователи могут вводить текст в редакторе статей.[show_time format=“F j, Y”]Для отображения форматированной текущей даты используется специальный обработчик коротких кодов.myfp_current_time_shortcodeПринимается массив атрибутов, и возвращается HTML-контент, который необходимо вставить на страницу.

Рекомендуемое чтение От новичка до профессионала в разработке плагинов для WordPress: полное руководство по созданию персонализированного веб-сайта.

Безопасность плагинов и рекомендуемые практики их использования

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

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

Все данные, поступающие от пользователей или из внешних источников (например…$_GET$_POST$_COOKIEВсе эти данные считаются ненадежными. Прежде чем использовать их в запросах к базе данных или отображать в браузере, их необходимо обработать.

Общий хостинг InterServer
Общий хостинг $2.50 USD в месяц, первый месяц $0.1 USD промо-код tryinterserver, 461 скрипт облачных приложений, установка в один клик.
  • При отображении данных в браузере необходимо использовать функции эскапирования, чтобы данные представлялись в виде чистого текста и не могли быть использованы для совершения атак типа XSS. В зависимости от контекста WordPress предоставляет различные функции эскапирования.esc_html()(Используется внутри HTML-элементов)esc_attr()(Используется внутри HTML-атрибутов)esc_url()(Используется в URL-адресах) иwp_kses_post()(Разрешается использование безопасных HTML-тегов.)
  • При взаимодействии с базой данных используйте предварительно подготовленные (запрограммированные) запросы: ни в коем случае не следует непосредственно объединять значения переменных с SQL-запросами. Для этого следует применять специальные конструкции и методы, обеспечивающие безопасность и надежность работы с данными.$wpdb->prepare()Методы или более продвинутые API, такие как…WP_QueryНапример:
global $wpdb;
$user_id = 123;
$safe_query = $wpdb->prepare( “SELECT * FROM {$wpdb->prefix}posts WHERE post_author = %d”, $user_id );
$results = $wpdb->get_results( $safe_query );

Здесь%dЭто заместитель (плейсхолдер) – символ, который предназначен для указания на место, где должна быть вставлена конкретная информация.$wpdb->prepare()Будет обработано безопасным способом.$user_idПеременные.

Реализация настроек параметров и мер безопасности

При добавлении настраиваемых параметров для плагина следует использовать WordPress Settings API. Этот API автоматически обрабатывает проверку уникальных идентификаторов (Nonce), проверку прав доступа и сохранение пользовательских настроек, значительно упрощая процесс обеспечения безопасности.

Во-первых, используйтеregister_setting()Зарегистрируйте группу настроек, а затем используйте её.add_settings_section()иadd_settings_field()Для добавления новых полей необходимо воспользоваться функцией обратного вызова (callback function), созданной ранее в меню управления.myfp_settings_pageВызванный изнутри…settings_fields( ‘myfp_settings_group’ )иdo_settings_sections( ‘myfp-settings’ )Будут отображены все необходимые поля для обеспечения безопасности, а также разделы для настройки при регистрации пользователей. Это гораздо удобнее, чем работать вручную.$_POSTДанные должны быть гораздо более безопасными и надежными.

резюме

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

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

Для разработки плагинов обязательно нужно владеть PHP на высоком уровне?

Да, прочные знания PHP являются обязательными, поскольку сам WordPress написан на этом языке. Вам потребуется понимать синтаксис PHP, функции, классы, пространства имен и другие основы программирования на PHP. Кроме того, базовые знания HTML, CSS и JavaScript также окажутся очень полезными при разработке пользовательского интерфейса (фронтенда) сайта.

Как отладить код моего плагина?

Самым эффективным методом является включение того, о чём говорилось ранее.WP_DEBUGWP_DEBUG_LOGиWP_DEBUG_DISPLAYКроме того, можно использовать…error_log()Функция записывает пользовательские сведения о дебагировании в лог-файлы или использует профессиональные инструменты дебагирования (например, Xdebug) в сочетании с вашим кодовым редактором для пошагового анализа работы программы.

Как мне добавить переводы на другие языки для своего плагина?

Во-первых, необходимо правильно настроить параметры в комментариях, расположенных в начале плагина.Text Domain(Например, ‘my-first-plugin’) иDomain Path(Например, `/languages`). Затем во всем коде в тех местах, где требуется перевод строк, используйте подобный подход.__( ‘Hello World’, ‘my-first-plugin’ )илиesc_html_e( ‘Settings’, ‘my-first-plugin’ )Функция перевода текста. В конце используйте такие инструменты, как Poedit, для генерации готового переведенного текста..potШаблонные файлы, и на их основе создаются версии на разных языках..poи.moПеревести файл и разместить его в указанном месте./languagesВнутри каталога.

Как опубликовать разработанный плагин в официальном каталоге WordPress?

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