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

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

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

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

Убедитесь, что ваша версия PHP соответствует минимальным требованиям WordPress, и включите функцию отчетов об ошибках — это крайне важно для отладки. Вы можете сделать это…wp-config.phpДобавьте следующий код в файл, чтобы включить режим отладки:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // 将错误记录到 /wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // 不在页面上显示错误

Кроме того, необходим инструмент для работы с кодом — такой как Visual Studio Code, PhpStorm или Sublime Text. Эти редакторы обычно поддерживают выделение синтаксиса, предложения по написанию кода и интеграцию с системами управления версиями, что значительно улучшает процесс программирования. Также рекомендуется установить разработческие инструменты в браузере и использовать расширения, специально разработанные для работы с WordPress, чтобы упростить проверку функций сайта, выполнение запросов к базе данных и отслеживание его производительности.

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

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

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

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

Во-первых, создайте для своего плагина уникальную папку, например:my-first-pluginВ этом папке создайте основной файл плагина; его обычно называют так же, как и папку.my-first-plugin.phpВ начале этого файла обязательно должно быть присутствовать примечание с информацией о плагине, соответствующее стандартам WordPress. Это примечание предоставляет системе WordPress основные сведения о плагине.

Пример комментария в заголовочной части файла основного плагина:

<?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
 */

В этом комментарии поле “Plugin Name” является обязательным; оно определяет имя плагина, которое будет отображаться в интерфейсе администрирования. Другая информация, такая как версия плагина и имя автора, помогает пользователям лучше понять его функции. После создания этого файла необходимо поместить его в соответствующее место (например, в папку с плагинами или в файлы, отвечающие за их управление)./wp-content/plugins/my-first-plugin/Каталог. В этот момент войдите в свой WordPress-аккаунт через панель администрирования и перейдите на страницу “Плагины”. Там вы увидите новый плагин с названием “Мой первый пользовательский плагин” и сможете его активировать. Хотя на данный момент этот плагин ничего не делает, вы успешно создали базовую структуру плагина.

Обработка активации и деактивации плагинов

При активации и деактивации плагинов часто необходимо выполнить ряд инициализационных и очистительных операций: создание таблиц в базе данных, настройка стандартных параметров или удаление временных данных. WordPress использует два специальных механизма (хука, hooks) для управления этими процессами:register_activation_hookиregister_deactivation_hook

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

Вы можете определить эти «хаки» (hooks) в основном файле плагина. Например, при активации плагина может потребоваться записать определенные параметры конфигурации в базу данных; при его деактивации эти параметры необходимо удалить. Код для реализации этого выглядит следующим образом:

// 定义插件激活时执行的函数
function my_plugin_activate() {
    // 添加一个默认选项到数据库
    add_option('my_plugin_default_option', '这是默认值');
    // 或者可以在这里初始化自定义数据库表(需要更复杂的SQL)
}
register_activation_hook(__FILE__, 'my_plugin_activate');

// 定义插件停用时执行的函数
function my_plugin_deactivate() {
    // 删除之前创建的选项
    delete_option('my_plugin_default_option');
    // 注意:通常不在停用钩子中删除数据,以免用户重新激活时丢失设置
    // 更常见的清理工作在卸载钩子中处理
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');

Следует отметить, что…register_deactivation_hookОбычно это используется для выполнения легких операций очистки данных, в то время как постоянное удаление информации (например, таблиц из базы данных) должно производиться в рамках процедур деинсталляции программы. Для реализации таких функций необходимы специальные механизмы, доступные в процессе деинсталляции.register_uninstall_hookЗарегистрируйтесь. Рациональное использование этих механизмов (хуков) позволит гарантировать, что ваш плагин будет вести себя корректно и не оставлять лишних данных на сайте.

Понимание и применение хуков (hooks) и фильтров (filters)

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

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

Действия-хаки (action hooks) позволяют вам выполнять пользовательские функции при наступлении определённых событий. Например, после публикации статьи…publish_post1) При загрузке веб-страницы в её верхней части (в заголовочном блоке).wp_head) или при инициализации из панели управления (admin_initВы можете использовать…add_action()Функция предназначена для монтирования вашего кода. Ниже приведен простой пример: она автоматически добавляет отрывок пользовательского текста в конце каждой статьи.

function add_custom_footer_to_content($content) {
    if (is_single()) { // 仅在单篇文章页面添加
        $custom_text = '<p><em>Спасибо, что прочитали эту статью!</em></p>'Функция add_custom_footer_to_content добавляет пользовательский футер в контент. Она вызывается с помощью фильтра the_content. Ниже приведен пример её реализации.  

function add_custom_footer_to_content($content) {  
    // Проверяем, есть ли пользовательский текст. Если нет, возвращаем оригинальный контент.  
    if (empty($content)) {  
        return $content;  
    }  
    // Добавляем пользовательский текст в контент.  
    $content .= $custom_text;  
    return $content;  
}
// Используем фильтр the_content. Обратите внимание, что это пример фильтра (Filter).  
add_filter(‘the_content', 'add_custom_footer_to_content');

Как показано в приведённом выше коде, мы фактически используем фильтры (filters). Фильтры предназначены для изменения данных, передаваемых им. Основное отличие фильтров от действий (actions) заключается в том, что фильтры обязаны возвращать изменённые значения. Типичные примеры фильтров включают…the_content(Изменение содержания статьи)the_title(Изменение заголовка) Иexcerpt_length(Изменение длины резюме). Соответствующее этому…add_filter()Функция используется для монтирования фильтрующих функций.

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

Хорошо спроектированный плагин не только использует встроенные хэнки (hooks) WordPress, но и предоставляет собственные пользовательские хэнки, чтобы другие разработчики могли расширять его функционал. Это очень удобно.do_action()Функция может создать хук (hook) для выполнения определенного действия.apply_filters()Можно создать фильтр-хук (filter hook).

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

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

// 定义插件的主要处理函数
function my_plugin_process_data($input_data) {
    // 在核心处理前,允许其他开发者通过过滤器修改 $input_data
    $filtered_data = apply_filters('my_plugin_filter_input', $input_data);

// ... 使用 $filtered_data 进行核心处理 ...

// 在处理完成后,触发一个动作钩子,通知其他开发者
    do_action('my_plugin_after_processing', $filtered_data);

return $result;
}

Благодаря созданию пользовательских хуков ваш плагин обладает высокой расширяемостью и соответствует философии разработки самого WordPress.

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

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

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

Во-первых, вам нужно использоватьadd_action('admin_menu', 'your_function')Используйте «хватки» (hooks) для регистрации элементов меню. В соответствующих функциях применяйте их для добавления новых элементов в меню.add_menu_page()илиadd_submenu_page()Функции для добавления верхнего меню или подменю. Ниже приведен пример основной реализации добавления верхнего меню и настройки соответствующей страницы:

\n// Внедрение административного меню для добавления административного меню
function my_plugin_add_admin_menu() {
    add_menu_page(
        'Настройки моего плагина',   // Название страницы
        'Мой плагин',   // Название меню
        'manage_options',   // Права доступа (для администраторов)
        'my-plugin-settings',   // Ссылка на меню
        'my_plugin_settings_page',   // Функция для отображения содержания страницы
        'dashicons-admin-generic',   // Иконка (Dashicon)
        80   // Позиция меню
    );
}
add_action('admin_menu', 'my_plugin_add_admin_menu');

// Определение содержания страницы настроек
function my_plugin_settings_page() {
    // Проверка прав пользователя
    if (!current_user_can('manage_options')) {
        return;
    }
    ?&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
            // 输出设置字段和非ce字段
            settings_fields('my_plugin_options_group');
            do_settings_sections('my-plugin-settings');
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

Поля для настройки регистрации и проверки

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

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

// 初始化插件设置
function my_plugin_settings_init() {
    // 注册一个设置选项组及其数据
    register_setting(
        'my_plugin_options_group', // 选项组名,需与settings_fields()参数一致
        'my_plugin_settings',      // 存储在wp_options表中的选项名
        'my_plugin_sanitize_input' // 可选的验证回调函数
    );

// 添加一个设置区域
    add_settings_section(
        'my_plugin_section_main',
        '主要设置',
        null, // 区域描述的回调函数,可为空
        'my-plugin-settings' // 所属页面的slug
    );

// 向该区域添加一个具体的字段
    add_settings_field(
        'my_plugin_field_text',
        '示例文本字段',
        'my_plugin_field_text_render', // 渲染字段HTML的回调函数
        'my-plugin-settings',
        'my_plugin_section_main'
    );
}
add_action('admin_init', 'my_plugin_settings_init');

// 渲染文本输入字段的函数
function my_plugin_field_text_render() {
    $options = get_option('my_plugin_settings');
    $value = $options['text_field'] ?? ''; // PHP 7.0+ 空合并运算符
    ?>
    <input type='text' name='my_plugin_settings[text_field]' value='<?php echo esc_attr($value); ?>'>
    <?php
}

// 清理和验证输入的函数
function my_plugin_sanitize_input($input) {
    $sanitized_input = [];
    if (isset($input['text_field'])) {
        // 清理文本输入,移除非法标签
        $sanitized_input['text_field'] = sanitize_text_field($input['text_field']);
    }
    return $sanitized_input;
}

С помощью API настроек (Settings API) WordPress автоматически обрабатывает сохранение параметров пользователей, проверку их безопасности и проверку прав доступа. Это значительно упрощает процесс разработки и повышает уровень безопасности системы.

резюме

С помощью этого руководства мы систематически прошли основные этапы разработки плагинов для WordPress: от настройки среды разработки и создания базовых файлов плагина до понимания и использования встроенных механизмов («хуков»), а также добавления профессионального интерфейса управления и настроек для плагина. На каждом этапе были представлены ключевые фрагменты кода и стандартные практики разработки. Суть разработки плагинов заключается в эффективном использовании обширной системы хуков WordPress для расширения его функционала, а также соблюдении его API-спецификаций для обеспечения безопасности и совместимости. Помните: начинайте с простой идеи, постепенно добавляйте новые функции и тщательно тестируйте плагин на протяжении всего процесса разработки – это эффективный подход к созданию качественных плагинов. Далее вы сможете изучить более сложные аспекты разработки, такие как создание пользовательских типов статей, использование шорткодов (Shortcodes), обработка AJAX-запросов и интернационализация плагина.

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

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

Да, наличие прочных знаний PHP является обязательным условием. Ведь ядро WordPress, а также его плагины написаны на PHP. Вам потребуется понимать синтаксис PHP, функции, концепции объектно-ориентированного программирования и т. д. Кроме того, базовые знания HTML, CSS и JavaScript также окажутся полезными при создании пользовательских интерфейсов и реализации их интерактивности.

Сколько файлов должно содержать плагин?

Никаких обязательных требований нет. Плагин может содержать только один основной PHP-файл. Однако по мере увеличения сложности функционала целесообразно разделить код на несколько файлов (например, для лучшей организации структуры программы и удобства обслуживания).admin.phpЗанимаюсь административной работой.public.phpЗанимаюсь разработкой веб-интерфейса.includesЛучше хранить общедоступные функции в отдельной папке, что поможет организовать и поддерживать код в порядке.

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

Это обычно вызвано фатальными ошибками, такими как синтаксические ошибки или вызов несуществующих функций или классов. Убедитесь, что вы уже это проверили.wp-config.phpЭто было начато в Китае.WP_DEBUGПроверьте шаблон и убедитесь, что всё в порядке.wp-content/debug.logОшибка в файле. Вы можете быстро восстановить доступ к сайту, отключив плагин через FTP или файловый менеджер (переименовав папку с плагином).

Как безопасно обрабатывать данные, предоставляемые пользователями на переднем этапе?

Никогда нельзя доверять пользовательским данным. Перед обработкой любых данных из форм, параметров URL или файлов cookie их необходимо проверить, очистить и экранировать. В WordPress предоставляется множество функций безопасности, таких какsanitize_text_field()(Очистить текст),esc_url()(Эскейп-коды в URL),wp_kses_post()(Фильтруем контент по разрешённым HTML-тегам) иintval()(Превратить в целое число). При выводе данных на HTML-страницу обязательно используйте <esc_html()esc_attr()Необходимо экранировать такие функции, как print и input.

Как сделать так, чтобы текст в моём плагине поддерживал несколько языков?

Это необходимо реализовать с помощью интернационализации (i18n). Во всех строках кода, которые необходимо перевести, используйте тег .__()или_e()Обёртка функции. Затем правильно настройте это в комментариях в заголовке плагина.Text DomainиDomain PathИспользуйте такие инструменты, как Poedit, для создания.potШаблонный файл и его генерация на разных языках..poи.moПереводите файлы. WordPress автоматически загрузит соответствующий перевод в зависимости от языковых настроек сайта.