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

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

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

Основы работы с плагинами для WordPress и настройка среды разработки

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

Основное определение плагина

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

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

Настройка локальной среды разработки.

Для эффективного и безопасного развития программного обеспечения настоятельно рекомендуется использовать локальную серверную среду. Вы можете выбрать такие инструменты, как XAMPP, MAMP, Local by Flywheel или Docker. Основные требования к системе: наличие установленных PHP (версия должна быть совместима с вашим целевым сервером), MySQL/MariaDB, а также Apache/Nginx. После этого скачайте последние файлы ядра WordPress и выполните процедуру установки.

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

Создайте свой первый плагин: мини-инструмент для вывода приветствий.

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

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

Заявление о информации, содержащейся в заголовочной части плагина

Откройте главный файл и введите следующий код для определения плагина:

<?php
/**
 * Plugin Name:       我的第一个问候语插件
 * Plugin URI:        https://yourwebsite.com/my-first-greeting-plugin
 * Description:       这是一个练习用的插件,用于在文章末尾添加问候语。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-greeting-plugin
 */

После сохранения файла перейдите на страницу “Плагины” в интерфейсе управления WordPress. Новый плагин должен появиться в списке плагинов, и вы сможете его активировать. Конечно, на данный момент у него нет никаких функций.

Рекомендуемое чтение 10 ключевых советов и практических рекомендаций по оптимизации производительности электронных магазинов на платформе WooCommerce

Используйте хаки (специальные механизмы) для добавления ключевых функций.

Работа WordPress во многом зависит от механизма “хуков” (hooks), который делится на несколько категорий:动作钩子(Акционные хукки – Action Hooks)过滤器钩子(Фильтрующие хуки – Filter Hooks). Нам нужно добавить текст после содержимого статьи, для этого мы должны использовать… the_content Этот фильтр-хук.

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

// 定义向文章内容添加问候语的函数
function mfgp_add_greeting_to_content( $content ) {
    // 确保只在主循环的单篇文章页面显示
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $greeting = '<p style="color:#666; font-style:italic;">Спасибо, что прочитали эту статью! Желаем вам прекрасного дня!</p>';
        $content .= $greeting;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器钩子上
add_filter( 'the_content', 'mfgp_add_greeting_to_content' );

После сохранения файла и активации плагина откройте любую статью на сайте, пролистайте её до конца – там должно быть видно добавленное приветствие. С помощью этого простого примера вы уже попрактиковались с самыми основными аспектами разработки плагинов: объявление плагина, написание функций, а также использование различных механизмов для его работы.add_filterилиadd_actionПривяжите функцию к соответствующему «хватку» (hook).

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

Улучшения функционала плагина: добавлена страница для настройки параметров управления.

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

Создать пункт меню "Администрирование".

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

Продолжите добавлять следующий код в основной файл:

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

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '问候语插件设置',          // 页面标题
        '自定义问候语',           // 菜单标题
        'manage_options',         // 权限要求(管理员)
        'my-greeting-plugin',     // 菜单 Slug
        'mfgp_settings_page_html' // 用于输出页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

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

Теперь нам нужно определить вышеупомянутую функцию-обратный вызов (callback function). mfgp_settings_page_html Необходимо отобразить HTML-форму страницы настройок и обработать данные, введенные пользователем в эту форму. WordPress предоставляет API для настроек, который упрощает этот процесс, но для лучшего понимания работы системы мы сначала воспользуемся базовыми методами.

// 定义设置页面的 HTML 结构
function mfgp_settings_page_html() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }

// 处理表单提交(非设置API方式)
    if ( isset( $_POST['mfgp_greeting_text'] ) ) {
        // 验证 Nonce 确保请求来源安全
        check_admin_referer( 'mfgp_save_settings' );
        // 清理并保存输入的数据
        $greeting_text = sanitize_textarea_field( $_POST['mfgp_greeting_text'] );
        update_option( 'mfgp_custom_greeting', $greeting_text );
        echo '<div class="notice notice-success is-dismissible"><p>Настройки сохранены!</p></div>';
    }

// 获取已保存的问候语
    $saved_greeting = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form method="post" action="">
            <?php wp_nonce_field( 'mfgp_save_settings' ); ?>
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="mfgp_greeting_text">Пользовательские приветствия</label></th>
                    <td>
                        <textarea name="mfgp_greeting_text" id="mfgp_greeting_text" rows="5" cols="50" class="large-text"><?php echo esc_textarea( $saved_greeting ); ?></textarea>
                        <p class="description">Этот текст будет отображаться в конце каждой статьи.</p>
                    </td>
                </tr>
            </table>
            <?php submit_button( '保存更改' ); ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

Обновить функцию вывода на переднем интерфейсе (фронтенде).

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

Общий хостинг InterServer
Общий хостинг $2.50 USD в месяц, первый месяц $0.1 USD промо-код tryinterserver, 461 скрипт облачных приложений, установка в один клик.
function mfgp_add_greeting_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        // 从数据库选项中获取问候语,如果没有则使用默认值
        $greeting_text = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
        if ( ! empty( $greeting_text ) ) {
            $greeting = '<p style="color:#666; font-style:italic;">'`. esc_html($greeting_text).`'</p>';
            $content .= $greeting;
        }
    }
    return $content;
}

Теперь администратор может свободно изменять текст, отображаемый на странице “Настройки” → “Пользовательские приветствия”, и изменения будут немедленно отражены на пользовательском интерфейсе.

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

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

Осуществление интернационализации текста.

Международная поддержка (i18n) позволяет переводить ваш плагин на другие языки. Вам необходимо обернуть все пользовательские текстовые строки с помощью специальных функций. Измените текстовые элементы в нашем плагине.

1. 在插件头部注释中,我们已经定义了 Text Domain
2. 在代码中,使用 () или esc_html() Функция обертывает строку в определенную структуру. Например:

    // 在设置页面函数中
    $greeting_text = get_option( 'mfgp_custom_greeting', __( ‘感谢您阅读本文!祝你拥有美好的一天!’, ‘my-first-greeting-plugin’ ) );
    echo ‘<h1>’ . esc_html__( ‘问候语插件设置’, ‘my-first-greeting-plugin’ ) . ‘</h1>’;

// 在前端输出函数中(注意:前端输出通常不需要翻译,除非是主题或用户决定)
    // 但如果问候语本身需要多语言,可能需要更复杂的逻辑。

3. 使用工具如 Poedit 创建 .pot Шаблонные файлы, на основе которых переводчики могут создавать свои переводы. .po и .mo Документ.

Усилить меры безопасности

Безопасность имеет первостепенное значение. Мы уже использовали ряд функций, обеспечивающих защиту данных, таких как…sanitize_textarea_fieldesc_htmlesc_textareaиwp_nonce_fieldКроме того, следует обратить внимание на следующее:
* 权限检查:在管理页面函数开始处使用 current_user_can Проведите проверку.
* 数据验证与清理:对所有用户输入(如 $_POST, $_GET)进行验证(是否符合预期格式)和清理(移除非法字符)。
* 非竞态条件更新:对于重要的选项,考虑使用 wp_options При работы с таблицами более безопасным способом является использование API Settings, который встроенно обеспечивает механизмы защиты от конкурентных операций (например, проверку уникальных идентификаторов – nonces) и проверку пользовательских прав.

резюме

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

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

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

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

Почему мой плагин не отображается в меню бэкенда после его активации?

Наиболее распространенная причина — проблемы с правами доступа. Проверьте, как вы выполняете вызовы (operations).add_options_pageПри использовании подобных функций важно убедиться, что второй параметр (capability) установлен правильно. Например… ‘manage_options’Кроме того, убедитесь, что ваша функция была правильно скомпилирована и запущена.add_action( ‘admin_menu’, ...)Функция была успешно запущена благодаря правильному использованию механизма монтирования “хуков” (hooks), и в коде не было обнаружено никаких синтаксических ошибок, могущих помешать её выполнению. Вы можете добавить нужные строки кода в начало файла.error_logИспользуйте функции для отладки.

Как отладить мой плагин для WordPress?

Во-первых, убедитесь, что у вас… wp-config.php В файле включен режим отладки WordPress. define( ‘WP_DEBUG’, true ); и define( ‘WP_DEBUG_LOG’, true );Таким образом, сообщения об ошибках будут сохраняться в записях. /wp-content/debug.log Файл находится в указанном месте. Кроме того, для отладки фронтенда можно воспользоваться инструментами разработчика браузера: вкладками “Консоль” и “Сеть”. Для более сложных логических операций рекомендуется использовать специальные средства разработки.error_log( print_r( $variable, true ) );Выпуск значений переменных в логи является распространенным методом.

Как мой плагин совместим с другими плагинами или темами?

为了最大程度保证兼容性,你的插件应该:1)使用独特的前缀命名所有函数、类、变量和选项(如我们使用了mfgp_),避免命名冲突。2)在添加修改前端或后端样式时,尽量使用独特的选择器类名。3)在可能的情况下,提供过滤器钩子(apply_filters),允许其他开发者修改你插件的行为。4)避免直接修改 WordPress 核心数据库表或文件。