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

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

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

Прежде чем начинать писать код, вам понадобится подходящая среда разработки. К ней относятся локальная установка WordPress и кодовый редактор. Для быстрого создания локальной серверной среды рекомендуется использовать такие инструменты, как XAMPP, MAMP, Local by Flywheel или Laragon. Убедитесь, что в вашей среде установлены последние версии PHP (рекомендуется версия 7.4 и выше) и MySQL/MariaDB.

Далее вам необходимо ознакомиться с основной структурой плагинов для WordPress. Основным файлом плагина является главный PHP-файл; его имя и имя каталога могут быть изменены по желанию, однако в этом файле обязательно должна присутствовать специальная заголовочная строка (plugin header), которая информирует систему WordPress о наличии плагина. Этот файл находится в каталоге, где установлен WordPress. wp-content/plugins Создайте новую папку внутри существующей папки. Например: my-first-plugin

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

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

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

Теперь давайте начнем создавать основную структуру нашего плагина. В каталоге с плагинами откройте главный PHP-файл и внесите следующую стандартную информацию, характерную для заголовочного файла плагина.

Ультахост (UltaHost) – хостинг-провайдер, предоставляющий услуги хостинга для сайтов, построенных на платформе WordPress.
Гарантия возврата средств в течение 30 дней, неограниченная пропускная способность интернет-канала и объем баз данных, бесплатная защита от DDoS-атак. При покупке на срок 3 лет предоставляется скидка в размере 501 ТБ до 4 ТБ.
<?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. В нем содержатся важные указания, которые помогают системе определить, какие плагины должны быть загружены и активированы.Plugin Name Это обязательное поле; все остальные поля являются необязательными. После сохранения файла вы сможете увидеть этот новый плагин на странице “Плагины” в области управления WordPress и активировать его. В настоящее время у плагина нет никаких функций.

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

Одной из самых простых функций является добавление пользовательского меню управления в административную панель веб-сайта. Мы будем использовать для этого соответствующие инструменты и методы разработки. add_action Функция была подключена (монтирована). admin_menu Этот элемент (акционный хук) находится здесь.

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

// 在管理菜单中添加一个顶级菜单
function mfp_add_admin_menu() {
    add_menu_page(
        '我的第一个插件设置', // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单 slug
        'mfp_settings_page',  // 回调函数,用于输出页面内容
        'dashicons-admin-generic', // 图标(可选)
        6                     // 菜单位置(可选)
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 定义设置页面的回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <p>Добро пожаловать на страницу настроек моего первого плагина!</p>
        <form method="post" action="/ru/options.php/" data-trp-original-action="options.php">
            <?php
            // 后续可以在这里添加设置字段
            ?>
            <p class="submit">
                <input type="submit" name="submit" id="submit" class="button button-primary" value="Сохранить изменения">
            </p>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

Этот код создает новый верхний меню под названием “Мои плагины”; при нажатии на него открывается простая страница настроек. Для реализации этого использовались соответствующие технологии и инструменты. add_menu_page Была создана функция для регистрации меню, а также определена функция-обратный вызов (callback function). mfp_settings_page Это процесс отображения содержимого страницы на экране.

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

Расширение функционала с помощью хуков и фильтров

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

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

Предположим, мы хотим автоматически добавлять определенный текст в конце каждой статьи на сайте. Это можно сделать путем настройки соответствующего механизма внедрения (монтажа) данного текста в структуру сайта. the_content Это реализуется с помощью фильтрующего хука. Обратите внимание: хотя название и звучит как “фильтр”, на самом деле… the_content Обычно используется для изменения содержимого, отображаемого в статьях.

// 在文章内容末尾添加自定义文本
function mfp_append_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', 'mfp_append_text_to_content');

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

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

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

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

Во-первых, нам необходимо зарегистрировать новую настройку и добавить её в существующую страницу меню.

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置到 “reading” 组(或自定义组)
    register_setting('mfp_plugin_settings', 'mfp_custom_message');

// 在现有页面内添加一个设置区域
    add_settings_section(
        'mfp_section_id',
        '自定义消息设置',
        'mfp_section_callback',
        'my-first-plugin'
    );

// 向该区域添加一个字段
    add_settings_field(
        'mfp_field_id',
        '页脚消息',
        'mfp_field_callback',
        'my-first-plugin',
        'mfp_section_id'
    );
}
add_action('admin_init', 'mfp_settings_init');

// 区域描述回调函数
function mfp_section_callback() {
    echo '<p>Здесь вы можете настроить сообщение, которое будет отображаться в конце статьи с помощью плагина.</p>';
}

// 字段输出回调函数
function mfp_field_callback() {
    // 从数据库中获取已保存的选项值
    $message = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
    echo '<input type="text" name="mfp_custom_message" value="' . esc_attr($message) . '" class="regular-text">'echo '<p class="description">Введите сообщение, которое вы хотите отображать в конце каждой статьи.</p>';
}

Затем необходимо изменить ранее определенные элементы. mfp_settings_page Функция, предназначенная для отображения установленных значений полей в форме.

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

// 更新后的设置页面回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form method="post" action="/ru/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、安全随机数和设置组
            settings_fields('mfp_plugin_settings');
            do_settings_sections('my-first-plugin');
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

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

function mfp_append_text_to_content($content) {
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        // 从选项中获取自定义消息,如果不存在则使用默认值
        $custom_text = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
        if (!empty($custom_text)) {
            $content .= '<p><em>'. wp_kses_post($custom_text) . '</em></p>';
        }
    }
    return $content;
}

Интернационализация плагинов и подготовка к их публикации

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

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

Используйте функцию перевода для обработки текста.

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

Измените предыдущий пример кода:

// 在管理菜单中添加一个顶级菜单(国际化版本)
function mfp_add_admin_menu() {
    add_menu_page(
        __('我的第一个插件设置', 'my-first-plugin'), // 页面标题
        __('我的插件', 'my-first-plugin'),           // 菜单标题
        'manage_options',
        'my-first-plugin',
        'mfp_settings_page',
        'dashicons-admin-generic',
        6
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 区域描述回调函数(国际化版本)
function mfp_section_callback() {
    echo '<p>' . esc_html__('在这里配置插件在文章末尾显示的消息。', 'my-first-plugin') . '</p>';
}

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

// 加载插件文本域
function mfp_load_textdomain() {
    load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'mfp_load_textdomain');

Подготовка архива с сжатыми плагинами

Перед публикацией или распространением плагина необходимо создать чистый пакет для развертывания. Убедитесь, что в каталоге плагина находятся все необходимые файлы, и удалите лишние или ненужные элементы. .git Фолдеры, файлы журналов (логов), конфигурационные файлы IDE и другие несвязанные с функционалом плагина элементы не входят в состав пакета. Обычно минимальный пакет с плагином должен включать в себя следующие элементы:
1. Основной плагин: PHP-файл.
2. Опциональный элемент readme.txt Файл должен соответствовать стандартам формата WordPress.org и использоваться для отображения в каталоге плагинов.
3. Файл, содержащий файлы с переводами. /languages Папка (если таковая имеется).
4. Другие необходимые папки с ресурсами JavaScript, CSS или изображениями.

Сжмите весь папку с плагинами в ZIP-файл. Этот файл можно установить с помощью функции “Загрузить плагин” в интерфейсе WordPress или отправить в официальный каталог плагинов WordPress.

резюме

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

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

Какие программировочные навыки необходимы для разработки плагинов для WordPress под названием ###?

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

Как должно называться основное (главное) файле плагина?

Никаких обязательных требований нет. Основной файл может иметь любое допустимое имя для PHP-файла, однако рекомендуется использовать имя, совпадающее с именем каталога, в котором находится плагин. Например, если имя каталога… my-super-pluginТогда главный файл может называться… my-super-plugin.phpКлючевым моментом являются комментарии о заголовках плагинов, расположенные в начале файла. WordPress использует информацию, содержащуюся в этих комментариях, для работы с плагинами. Plugin Name: Для идентификации плагинов…

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

Существует несколько способов отладки плагинов. Во-первых, убедитесь, что у вас… wp-config.php В файле включите режим отладки WordPress. WP_DEBUG Константа установлена на trueЭто позволит отображать на странице ошибки PHP, предупреждения и уведомления. Кроме того, можно использовать… error_log() Функция записывает информацию о дебагировании в ошибочный журнал сервера, либо использует более продвинутые инструменты для дебагирования, такие как плагин Query Monitor, который предоставляет подробную информацию о запросах к базе данных, хэках, ошибках PHP и т. д.

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

Чтобы опубликовать плагин в официальном каталоге плагинов WordPress.org, вам сначала необходимо зарегистрировать учетную запись на сайте WordPress.org, а затем представить свой плагин на рассмотрение. Код вашего плагина должен соответствовать лицензии GNU GPL и включать корректно сформатированные файлы. readme.txt Файлы. Команда по рецензированию проверяет качество кода, его безопасность, а также соответствие установленным рекомендациям по структуре каталогов. После успешной проверки вы получите SVN-репозиторий, который будет использоваться для управления и обновления версий вашего плагина.