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

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

Подготовка и настройка окружения

Прежде чем начинать писать код, вам понадобится подходящая среда разработки. К ней относятся локальная установка WordPress и кодовый редактор. Для создания локальной серверной среды рекомендуется использовать XAMPP, Local by Flywheel или Docker. Убедитесь, что ваша версия WordPress является самой новой, чтобы использовать последние API и функции безопасности.

Вам необходимо ознакомиться с основной структурой плагинов для WordPress. Минимальный плагин должен включать по крайней мере один главный файл, который представляет собой PHP-файл с определёнными заголовочными комментариями. Обычно этот файл называется… your-plugin-name.phpЭто сообщение указывает WordPress на то, что перед ним находится плагин, и содержит такую информацию, как его название, описание, версия и автор.

В кодовом редакторе создайте новую папку для вашего плагинного проекта, например: my-first-pluginВ этой папке создайте основной PHP-файл.

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

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

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

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

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

В только что созданном PHP-файле необходимо добавить стандартную заголовочную строку для плагина. Например, плагин под названием “Приветствие сайта” может начинаться следующим образом:

<?php
/**
 * Plugin Name:       站点问候语
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       一个简单的插件,用于在网站前台显示自定义问候语。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

WordPress будет выполнять сканирование. wp-content/plugins Все PHP-файлы, находящиеся в каталоге, должны считывать определенные комментарии и отображать их на странице управления плагинами в бэкенде. Text Domain Используется для интернационализации.Domain Path Было указано местоположение языкового файла.

Код, реализующий основные функции

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

Во-первых, нам нужно создать функцию для вывода приветствия. Затем используйте эту функцию для выполнения необходимых действий. add_action Функция привязывает этот результат к определенному действию, выполняемому в WordPress. Например… wp_footer

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

// 定义一个函数来输出问候语
function my_first_plugin_display_greeting() {
    echo '<p style="position: fixed; bottom: 10px; left: 10px; background: #f1f1f1; padding: 10px; border-radius: 5px;">Здравствуйте, добро пожаловать на мой сайт!</p>';
}

// 使用 add_action 钩子将函数挂载到 wp_footer 动作
add_action( 'wp_footer', 'my_first_plugin_display_greeting' );

После завершения работы над кодом перенесите этот пакет плагинов (например, my-first-pluginВсё это нужно скопировать в каталог вашей установки WordPress. wp-content/plugins/ Путь к файлу уже указан. Затем войдите в панель управления WordPress, перейдите в меню “Плагины” (Plugins), и там должен быть плагин “Приветствие сайта” (Site Greeting). Нажмите кнопку “Включить” (Enable). Теперь, зайдя на главную страницу вашего сайта, вы увидите пользовательское приветствие в нижней части экрана.

Добавить параметры управления для плагина

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

Создание страницы настроек плагина

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

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

Во-первых, создайте функцию для отображения HTML-контента страницы настроек.

// 渲染插件设置页面的函数
function my_first_plugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Настройка приветственных сообщений для сайта</h1>
        <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
}

Затем используйте… add_action Крючок находится… admin_menu Страница для регистрации на этом этапе.

// 将设置页面添加到后台菜单
function my_first_plugin_add_admin_menu() {
    add_options_page(
        '问候语设置',          // 页面标题
        '站点问候语',          // 菜单标题
        'manage_options',      // 权限要求
        'my-first-plugin',     // 菜单别名
        'my_first_plugin_settings_page' // 渲染函数
    );
}
add_action( 'admin_menu', 'my_first_plugin_add_admin_menu' );

Поля регистрационных настроек и сохранение данных

Одних страниц недостаточно; нам также необходимо определить конкретные поля для настройок (например, текстовые поля, выпадающие списки) и обработать процесс сохранения данных. Для этого потребуется использовать API настроек WordPress. register_settingadd_settings_section и add_settings_field Такие функции…

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

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

// 初始化插件的设置
function my_first_plugin_settings_init() {
    // 注册一个设置,将其保存到 `options` 表的 `my_first_plugin_greeting_text` 字段中
    register_setting( 'my_first_plugin_settings_group', 'my_first_plugin_greeting_text' );

// 在页面中添加一个设置区域
    add_settings_section(
        'my_first_plugin_section',
        '自定义问候语',
        null,
        'my-first-plugin'
    );

// 在设置区域中添加一个文本字段
    add_settings_field(
        'my_first_plugin_field',
        '问候语文本',
        'my_first_plugin_field_render',
        'my-first-plugin',
        'my_first_plugin_section'
    );
}
add_action( 'admin_init', 'my_first_plugin_settings_init' );

// 渲染文本输入框的函数
function my_first_plugin_field_render() {
    $option = get_option( 'my_first_plugin_greeting_text', '你好,欢迎来到我的网站!' );
    echo '<input type="text" name="my_first_plugin_greeting_text" value="' . esc_attr( $option ) . '" style="width: 300px;" />';
}

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

Общий хостинг InterServer
Общий хостинг $2.50 USD в месяц, первый месяц $0.1 USD промо-код tryinterserver, 461 скрипт облачных приложений, установка в один клик.
function my_first_plugin_display_greeting() {
    $greeting_text = get_option( 'my_first_plugin_greeting_text', '你好,欢迎来到我的网站!' );
    echo '<p style="position: fixed; bottom: 10px; left: 10px; background: #f1f1f1; padding: 10px; border-radius: 5px;">'`. esc_html($greeting_text).`'</p>';
}

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

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

Проверка и очистка данных

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

Для контента, отображаемого на HTML-страницах, используйте… esc_html()esc_attr() или wp_kses_post() Необходимо использовать функции для эскапирования символов, чтобы предотвратить атаки типа XSS (Cross-Site Scripting).
Для переменных, используемых в запросах к базе данных, следует применять предварительно скомпилированные запросы (предкомпилированные стейты) или аналогичные подходы. $wpdb->prepare() Такой метод.

В нашем примере, при сохранении настроек, WordPress… register_setting Функция автоматически выполняет некоторые базовые операции по очистке данных. При выводе результатов мы использовали… esc_html() Необходимо обеспечить, чтобы HTML-теги, содержащиеся в тексте приветствий, безопасно экранировались (т. е. преобразовывались) в обычный текст.

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

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

В форме на странице настроек…settings_fields() Функция уже автоматически включает проверку на соответствие стандартам CE (Conformity Assessment). Однако если вы создаете собственные обработчики AJAX или используете нестандартные формы, проверку необходимо выполнять вручную. Для этого обычно применяются специальные механизмы проверки данных. current_user_can() Проверьте права доступа и используйте их. check_admin_referer() или wp_verify_nonce() Проверка случайного числа.

Например, в пользовательской функции обработки отправки данных:

function my_plugin_handle_form_submit() {
    // 检查权限
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足' );
    }
    // 验证随机数
    if ( ! isset( $_POST['my_nonce_field'] ) || ! wp_verify_nonce( $_POST['my_nonce_field'], 'my_action' ) ) {
        wp_die( '安全校验失败' );
    }
    // ... 处理安全的数据 ...
}

резюме

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

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

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

Для добавления поддержки интернационализации (i18n) в плагин необходимо воспользоваться текстовыми полями и функциями перевода. Сначала убедитесь, что в заголовочном файле плагина правильно настроены все необходимые параметры для работы с международными языками. Text Domain и Domain PathВ коде все строки, которые необходимо перевести, следует обозначить специальными символами или метками. __() или _e() Сначала необходимо обернуть нужные функции в соответствующие оболочки (функциональные классы или модули). Затем с помощью таких инструментов, как Poedit, создайте шаблон файлов формата POT, а также файлы с переводами в форматах .mo и .po. Поместите эти файлы в каталог языка, указанный в настройках плагина.

Пример:echo esc_html( __( ‘Hello, World!’, ‘my-first-plugin’ ) );Когда пользователь переключается на нужный язык, WordPress автоматически загружает соответствующие файлы с переводами.

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

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

Например, не следует использовать… display_greeting()Вместо этого следует использовать… my_first_plugin_display_greeting()Если вы используете пространства имен в PHP, вы можете объявить их в начале файла. namespace MyFirstPlugin;Затем внутри используются краткие имена функций, а при внешнем вызове они разбираются с помощью пространств имен.

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

Чтобы опубликовать плагин в официальном каталоге WordPress.org, вам необходимо сначала создать аккаунт на WordPress.org и отправить плагин. Процесс включает в себя: обеспечение соответствия кода лицензии GPL, проверку стандартов PHPCS, подготовку файла readme.txt (в соответствии с определённым форматом), предоставление чётких скриншотов и документации. После отправки код будет проверен модератором, и, если он будет одобрен, плагин будет опубликован. После публикации пользователи смогут найти и установить ваш плагин непосредственно из административной панели WordPress.

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

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