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

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

Почему плагины являются ядром экосистемы WordPress?

Мощная расширяемость WordPress во многом обусловлена его системой плагинов. Плагины позволяют разработчикам добавлять любые функции на сайт без необходимости изменения основного кода WordPress — от простых форм для контактов до сложных систем электронной коммерции. Понимание процесса разработки плагинов означает, что вы обладаете ключом к настройке WordPress под любые потребности. Система плагинов следует принципу “соглашений важнее настроек” и взаимодействует с основным кодом через четко определенные механизмы (hooks) в рамках жизненного цикла плагина.

Стандартный плагин по сути представляет собой один или несколько компонентов, расположенных в определенных местах системы./wp-content/plugins/В PHP-файлах, расположенных в каталоге, обязательно должны присутствовать специальные комментарии в начале файла, предназначенные для описания данного плагина в системе WordPress. Такой модульный подход обеспечивает изоляцию функций плагина и стабильность работы всей системы, что позволяет безопасно и контролируемо активировать, деактивировать или удалить плагин.

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

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

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

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

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

Заголовок информации о плагине

Главный файл плагина должен начинаться с определенного блока комментариев – это ключ к его распознаванию системой WordPress. Вставьте следующий код в ваш главный PHP-файл:

<?php
/**
 * Plugin Name:       我的第一个问候插件
 * Plugin URI:        https://example.com/my-greeting-plugin
 * Description:       这是一个演示插件,用于在网站页脚添加一句自定义问候语。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-greeting-plugin
 * Domain Path:       /languages
 */

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

Использование действий-хуков (action hooks) для добавления новых функций

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

Добавьте приветствие в футер.

Одной из распространённых задач является добавление контента в нижнюю часть страницы (футер) веб-сайта. WordPress предоставляет для этого необходимые инструменты и возможности.wp_footerЭто действие-хук (action hook). Мы можем “присоединить” (mount) к этому хуку пользовательские функции.

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

Ниже комментариев в начале основного PHP-файла добавьте следующий код:

// 声明一个自定义函数,用于输出问候语
function my_greeting_display() {
    echo '<p style="text-align: center; color: #666; padding: 10px;">Здравствуйте, мир! Добро пожаловать к использованию моего первого плагина для WordPress.</p>';
}
// 使用 add_action 函数将我们的自定义函数挂载到 wp_footer 钩子上
add_action( 'wp_footer', 'my_greeting_display' );

add_actionФункции служат своего рода мостом, соединяющим пользовательский код с ядром системы WordPress. Первым параметром функции является имя используемого хэка (hook).‘wp_footer’Второй параметр — это имя функции, которую мы сами определили.‘my_greeting_display’Сохраните файл и обновите веб-страницу — тогда вы увидите это приветственное сообщение в нижней части экрана.

Введение фильтров повышает уровень гибкости системы.

Действия-хаки (action hooks) позволяют нам выполнять определенные действия, в то время как фильтры-хаки (filter hooks) предназначены для изменения данных. Они обеспечивают возможность модифицировать данные перед их использованием или отображением в браузере. Благодаря этому функционал плагинов становится более гибким и настраиваемым.

hosting.com Общий хостинг
Высокая производительность благодаря процессорам AMD EPYC, SSD-накопителям NVMe и LiteSpeed, круглосуточная экспертная поддержка, передовые меры безопасности, включая SSL, защиту от грубой силы, вредоносных программ и DDoS, экономия до 73%

Пример изменения заголовка статьи.

Предположим, мы хотим автоматически добавлять перед названиями всех статей текст “【Рекомендуется】”. Для этого мы можем использовать соответствующие программные средства или скрипты.the_titleФильтр.

Добавьте следующие новые функции и фильтры в основной файл вашего плагина:

// 声明一个函数,用于修改文章标题
function my_prefix_post_title( $title, $post_id = null ) {
    // 确保只在主循环且是文章页面添加前缀
    if ( is_single() && in_the_loop() ) {
        $title = '【推荐】' . $title;
    }
    // 必须返回修改后的值
    return $title;
}
// 使用 add_filter 函数,挂载到 the_title 过滤器
add_filter( 'the_title', 'my_prefix_post_title', 10, 2 );

add_filterТретий параметр10Это приоритет: чем меньше число, тем операция выполняется раньше. Четвертый параметр…2Означает, что данные передаются функции.my_prefix_post_titleКоличество параметров. Функция-фильтр должна возвращать измененное значение, а не просто его выводить. Это позволяет вашему коду совместно работать с цепочками фильтров других плагинов или тем.

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

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

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

Добавить страницу настроек в панель управления.

Мы добавим простой верхний меню в левую навигационную панель веб-панели управления WordPress.

Общий хостинг InterServer
Общий хостинг $2.50 USD в месяц, первый месяц $0.1 USD промо-код tryinterserver, 461 скрипт облачных приложений, установка в один клик.

В основном файле вашего плагина продолжите добавлять следующий код:

// 注册管理菜单
function my_greeting_add_admin_menu() {
    add_menu_page(
        '问候插件设置',       // 页面标题
        '问候插件',           // 菜单标题
        'manage_options',     // 权限(管理员)
        'my-greeting-plugin', // 菜单slug
        'my_greeting_admin_page', // 回调函数,用于显示页面内容
        'dashicons-admin-generic', // 菜单图标(WordPress Dashicons)
        80                    // 菜单位置
    );
}
add_action( 'admin_menu', 'my_greeting_add_admin_menu' );

// 定义设置页面的HTML内容
function my_greeting_admin_page() {
    // 安全检查
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/ru/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段(后续可扩展)
            settings_fields( 'my_greeting_options' );
            do_settings_sections( 'my-greeting-plugin' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
        <p>Добро пожаловать на страницу настроек моего первого плагина. В будущем здесь можно будет добавить ещё больше параметров.</p>
    </div>
    &lt;?php
}

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

резюме

Создав простой плагин для приветствий, мы прошли основные этапы разработки плагинов для WordPress: начали с создания базовых файлов и информации в заголовочном файле (header), а затем использовали имеющиеся инструменты и возможности системы для дальнейшей работы над плагином.add_actionХук выполняет код в определенном месте, а затем продолжает свою работу.add_filterИзмените содержимое вывода следующим образом: в конце добавьте информацию о том, что с помощью API меню управления можно создать интерфейс для настройки плагина в режиме администрирования. Эти четыре основополагающих элемента – структура файлов, хук-методы действий, хук-методы фильтров и интерфейс управления – составляют основу практически всех плагинов для WordPress. Понимание и умелое применение этих концепций позволит вам перейти от уровня новичка к уровню эксперта и начать создавать более сложные, функционально мощные пользовательские инструменты, полностью раскрывая потенциал WordPress.

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

Какова минимальная структура плагина ###?
Плагин может содержать только один отдельный PHP-файл. Главное, чтобы этот файл включал корректные заголовочные комментарии, характерные для WordPress-плагинов.Plugin Name), и поместите его там./wp-content/plugins/В каталоге или его подкаталогах WordPress сможет распознать этот файл и отобразить его в списке. Конечно, сложные плагины часто организуют свой код в нескольких файлах и подкаталогах для облегчения обслуживания.

В чем заключается основное отличие между действием-хуком (action hook) и фильтром-хуком (filter hook)?

Акционные хуксы используются для выполнения определенных действий в определенный момент времени; они не требуют возвращения значения вашей функции; их основная функция – выполнение определенного блока кода. Фильтрующие хуксы предназначены для изменения данных; они обязательно требуют возвращения значения вашей функции (обычно измененного исходного значения), чтобы данные могли передаваться дальше по цепочке фильтрации. Проще говоря, акционные хуксы используются для выполнения каких-либо действий, а фильтрующие хуксы – для изменения данных.

Как обеспечить, чтобы код моего плагина не конфликтовал с кодом других плагинов?

Для предотвращения конфликтов между именами функций, классов и констант рекомендуется использовать пространства имен (это является лучшей практикой) или присваивать всем идентификаторам уникальные префиксы. Например, в приведённых в этой статье примерах все функции используют такие префиксы.my_илиmy_greeting_В качестве префикса: начиная с PHP 5.3, использование пространств имен считается более современным и эффективным подходом к организации кода.

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

Во-первых, убедитесь, что у вас…wp-config.phpФайл открыт в приложенииWP_DEBUGdefine( ‘WP_DEBUG’, true );Используйтеerror_log()Функция записывает информацию о дебагировании в ошибочный журнал сервера. Для проверки переменных можно использовать…print_r()илиvar_dump()Объединивwp_die()Вы можете безопасно отображать данные на странице. Кроме того, использование таких разработческих плагинов, как Query Monitor, значительно повышает эффективность отладки.