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

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

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

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

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

Подготовка среды разработки и базовой инфраструктуры

Прежде чем начать писать первый строку кода, крайне важно создать подходящую среду для разработки. Вам понадобится локальная серверная среда (например, XAMPP, Local by Flywheel или DevKinsta), текстовый редактор (такой как VS Code или PhpStorm), а также установленная версия WordPress для тестирования.

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

Входной пункт для плагина представляет собой основной PHP-файл. Комментарии в начале этого файла играют ключевую роль в распознавании плагина системой WordPress. Давайте сначала создадим базовую структуру плагина.

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

Создание основного файла плагина

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

В заголовке файла обязательно должны содержаться стандартные аннотации с информацией о плагинах. Вот пример наиболее простого варианта реализации:

<?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. Новый плагин должен появиться в списке плагинов, и вы сможете его активировать. В настоящее время у него нет никаких функций, но базовая структура уже создана.

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

Плагин с четкой структурой облегчает его долгосрочное обслуживание. Рекомендуется создать следующие каталоги:
* /assets/Предназначено для хранения статических ресурсов, таких как CSS-файлы, JavaScript-код и изображения.
* /includes/Для хранения основных PHP-классов и файлов с функциями.
* /languages/Предназначено для хранения файлов с международными переводами (.po/.mo).

Рекомендуемое чтение Суть принципов работы Tailwind CSS: разобрание механизмов работы этой практичной и атомизированной CSS-фреймворка

Главный файлmy-first-plugin.phpПлагин должен отвечать исключительно за инициализацию своих функций, такую как определение констант, включение других файлов, регистрация хуков (специальных функций, вызываемых в определенные моменты программы) и т. д.

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

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

Добавьте в бэкенде верхний меню (топ-меню).

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

hosting.com Общий хостинг
Высокая производительность благодаря процессорам AMD EPYC, SSD-накопителям NVMe и LiteSpeed, круглосуточная экспертная поддержка, передовые меры безопасности, включая SSL, защиту от грубой силы, вредоносных программ и DDoS, экономия до 73%
// 定义在管理员菜单初始化时执行的功能
function mfp_add_admin_menu() {
    add_menu_page(
        '我的插件设置',         // 页面标题
        '我的插件',            // 菜单标题
        'manage_options',      // 所需权限
        'my-first-plugin',     // 菜单slug
        'mfp_display_settings_page', // 用于显示页面内容的回调函数
        'dashicons-admin-generic', // 菜单图标(Dashicon)
        6                      // 菜单位置
    );
}
// 将函数挂载到 `admin_menu` 钩子上
add_action('admin_menu', 'mfp_add_admin_menu');

Создание содержимого, отображаемого на странице настроек

В приведённом выше коде…mfp_display_settings_pageЭто функция-обратный вызов (callback function), которая отвечает за вывод HTML-контента страницы настройок. Нам необходимо определить эту функцию.

// 设置页面的显示内容
function mfp_display_settings_page() {
    // 检查用户权限
    if (!current_user_can('manage_options')) {
        wp_die(__('你没有权限访问此页面。'));
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form action="/ru/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段和安全nonce字段
            settings_fields('mfp_options_group'); // 设置组的名称
            do_settings_sections('my-first-plugin'); // 页面slug
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

Этот код создает стандартную рамку для страницы настроек в WordPress; внутри нее используются определенные функции и элементы интерфейса.settings_fields()иdo_settings_sections()Функция позволяет нам использовать API настроек WordPress для управления нашими параметрами, что является наиболее безопасным и стандартизированным способом.

Используйте API настроек (Settings API) для управления параметрами плагинов.

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

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

Регистрационные настройки, поля и разделы

Нам нужно…admin_initИнициализируем наши настройки в функции-хуке. Для начала используем…register_setting()Зарегистрируйте параметр настройки.

function mfp_register_settings() {
    // 注册一个设置:`mfp_options` 是存储在`wp_options`表中的键名
    register_setting(
        'mfp_options_group', // 设置组名,需与`settings_fields()`参数一致
        'mfp_options',       // 选项名
        'mfp_sanitize_options' // 可选:数据清洗回调函数
    );

// 添加一个设置章节
    add_settings_section(
        'mfp_main_section',                // 章节ID
        '主要设置',                         // 章节标题
        'mfp_main_section_callback',       // 章节介绍的回调函数
        'my-first-plugin'                  // 所属页面slug
    );

// 在章节中添加一个文本字段
    add_settings_field(
        'mfp_text_field',                  // 字段ID
        '示例文本',                         // 字段标签
        'mfp_text_field_callback',         // 用于渲染字段HTML的回调函数
        'my-first-plugin',                 // 所属页面slug
        'mfp_main_section'                 // 所属章节ID
    );
}
add_action('admin_init', 'mfp_register_settings');

Функции для отображения и очистки данных, связанные с определёнными полями

Теперь нам необходимо определить все используемые выше обратные вызовы (callback-функции), которые будут отвечать за вывод HTML-кода для полей и очистку данных.

Общий хостинг InterServer
Общий хостинг $2.50 USD в месяц, первый месяц $0.1 USD промо-код tryinterserver, 461 скрипт облачных приложений, установка в один клик.
// 主章节的描述文本
function mfp_main_section_callback() {
    echo '<p>Это основная область настроек плагина.</p>';
}

// 文本字段的HTML输出
function mfp_text_field_callback() {
    // 从数据库获取现有值
    $options = get_option('mfp_options');
    $value = $options['mfp_text_field'] ?? ''; // PHP 7.0+ 空合并运算符
    echo '<input type="text" name="mfp_options[mfp_text_field]" value="' . esc_attr($value) . '" class="regular-text">';
}

// 数据清洗函数(可选但推荐)
function mfp_sanitize_options($input) {
    $sanitized_input = [];
    if (isset($input['mfp_text_field'])) {
        // 对文本字段进行基本的清洗,如去除标签
        $sanitized_input['mfp_text_field'] = sanitize_text_field($input['mfp_text_field']);
    }
    return $sanitized_input;
}

Таким образом, плагин с страницей настроек безопасности готов к использованию. После активации плагина вы сможете увидеть в меню “Мои плагины” в области управления WordPress; нажав на него, вы сможете настроить и сохранить текстовый параметр. Все данные безопасно хранятся с использованием API WordPress.wp_optionsВ таблице.

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

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

Зарегистрируйте простой короткий код.

Мы зарегистрируем аккаунт под названием…[my_greeting]Это короткий код, предназначенный для отображения приветственного сообщения на стороне клиента (фронтенде). Используйте его по мере необходимости.add_shortcode()Функция.

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

// 注册短代码
function mfp_greeting_shortcode($atts, $content = null) {
    // 使用shortcode_atts设置默认属性并合并用户输入
    $atts = shortcode_atts(
        array(
            'name' =&gt; '访客', // 默认值
        ),
        $atts,
        'my_greeting' // 短代码名称
    );

// 获取插件选项中存储的文本
    $options = get_option('mfp_options');
    $custom_text = $options['mfp_text_field'] ?? '';

// 构造输出
    $output = '<div class="mfp-greeting">'$output .= '<p>Здравствуйте, %s! Добро пожаловать на наш сайт.</p>';
    if (!empty($custom_text)) {
        $output .= '<p><strong>Пользовательское сообщение:</strong>'`.esc_html($custom_text)`.'</p>'$output = '</div>';

// 返回输出内容,而不是直接echo
    return $output;
}
add_shortcode('my_greeting', 'mfp_greeting_shortcode');

Теперь пользователи могут вводить текст в редакторе статей.[my_greeting name="张三"]На стороне пользователя будет отображаться персонализированное приветственное сообщение; кроме того, если на сервере задано “примерное текстовое содержимое”, оно также будет показано вместе с приветствием. Такой подход позволяет эффективно связать настройки сервера с отображаемым контентом на стороне пользователя.

резюме

После выполнения вышеуказанных шагов мы создали полнофункциональный плагин для WordPress. Мы начали с нуля, разработали основные файлы и структуру плагина, используя…add_menu_page()Благодаря API настроек была создана безопасная страница для изменения параметров системы, и все изменения передаются на сервер.add_shortcode()Была реализована вывод информации на пользовательском интерфейсе (фронтенде). Этот процесс охватывает основные этапы разработки плагинов: планирование, инициализация, интеграция с бэкенд-API, обработка данных и предоставление интерфейсов для пользовательского доступа.

После того, как вы хорошо освоите эти основы, вы сможете перейти к более сложным темам, таким как создание пользовательских типов статей, использование метаданных (Meta Box), настройка пользовательских таблиц базы данных, разработка REST API-пунктов конечности, обработка запросов с использованием AJAX, а также интернационализация плагинов. Помните, что соблюдение стандартов кодирования и рекомендаций WordPress является ключом к созданию качественных и легко обслуживаемых плагинов.

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

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

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

Как отладить собственный плагин для WordPress?

Прежде всего, убедитесь, что вwp-config.phpФайл открыт в приложенииWP_DEBUGиWP_DEBUG_LOGТаким образом, сообщения об ошибках будут записываться в файлы журнала (логи). Кроме того, можно использовать…error_log()Функции выводят информацию о процессе своей работы. Для анализа сложной логики можно использовать профессиональные инструменты отладки, такие как Xdebug, чтобы пошагово выполнять код.

Как обеспечить безопасность плагина при его разработке?

Всегда проверяйте и очищайте вводимые пользователем данные. Для этого используйте встроенные функции WordPress.esc_html(), esc_attr(), sanitize_text_field()иwp_kses()Обработайте результаты вывода, используя методы, не основанные на технологии CE (Common Encoding).wp_nonce_field()Это меры предотвращения подделки запросов между сайтами (Cross-Site Request Forgery, CSRF). Для операций с базой данных используется…$wpdbМетоды, предоставляемые классом, или их использованиеprepare()Используйте соответствующие конструкции кода для предотвращения взломов системы с использованием SQL-инъекций.

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

Настоятельно рекомендуется выполнять основную часть работы над разработкой в локальной среде (например, Local или XAMPP). Локальная среда обеспечивает быструю отзывчивость, не зависит от сети, и позволяет свободно тестировать новые функции без риска повреждения работы онлайн-сайта. После того, как основные функции будут разработаны, их следует развернуть в тестовую среду в реальном времени для проведения окончательных тестов на совместимость.

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

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