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

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

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

Основная структура и стандарты плагинов для WordPress

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

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

Каждый плагин должен иметь основной PHP-файл, имя которого обычно совпадает с именем каталога, содержащего плагин. В начале этого файла должна быть указана специальная заголовочная строка с информацией о плагине; благодаря этой строке WordPress может распознать плагин.

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

Создайте в каталоге плагинов файл с названием… my-first-plugin.php Файл должен содержать следующую информацию в заголовочном блоке (header):

Ультахост (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
 */

Следуйте лучшим практикам безопасности.

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

В основном файле плагина необходимо добавить код обеспечения безопасности сразу после заголовочных комментариев, используя для этого уникальный префикс (например, `SECURITY:`). mfp_Используйте это название для своей функции:

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// 使用唯一前缀定义一个函数
function mfp_display_greeting() {
    echo '<p>Здравствуйте, рады, что вы используете мой первый плагин!</p>';
}

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

Механизм расширений в WordPress основан на использовании так называемых «хуков» (Hooks), которые делятся на действия (Actions) и фильтры (Filters). Понимание и правильное применение хуков является ключевым аспектом разработки плагинов.

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

Акционные хаки (action hooks) позволяют выполнять ваш собственный код в определенные моменты времени или при наступлении определенных событий. Например, для добавления текста в нижнюю часть страницы можно воспользоваться такими хаками. wp_footer Действие.

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

Монтируйте ранее определённую функцию на… wp_footer На крючке:

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

Таким образом, когда WordPress обрабатывает раздел «Футер» (footer) страницы, будет выполнен соответствующий вызов. mfp_display_greeting Функция, выводящая приветствие.

Изменить содержимое с помощью хуков фильтра

Фильтровые хаки (filter hooks) используются для изменения данных. Они принимают значение, обрабатывают его и затем возвращают результат. Например, для изменения стандартного суффикса в заголовках статей можно воспользоваться такими хаками. the_title Фильтр.

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

Создайте функцию для изменения заголовка статьи и добавьте её в фильтр:

// 定义一个函数来修改文章标题
function mfp_modify_title( $title, $id = null ) {
    // 仅在前端修改非管理员页面的标题
    if ( ! is_admin() && in_the_loop() ) {
        $title .= ' - 来自我的插件';
    }
    return $title;
}
// 将函数挂载到 the_title 过滤器钩子,参数3是优先级,参数4是接受的参数个数
add_filter( 'the_title', 'mfp_modify_title', 10, 2 );

\nСоздание интерфейса управления плагинами.

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

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

пользоваться add_menu_page() или add_options_page() Функция позволяет добавить страницу управления для вашего плагина. Обычно эта страница находится в меню “Настройки”.

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

Создайте функцию для регистрации меню управления и подключите её к нужному месту в системе. admin_menu Действие:

// 添加插件设置页面到后台菜单
function mfp_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单slug
        'mfp_render_settings_page' // 用于渲染页面的回调函数
    );
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );

// 渲染设置页面的回调函数
function mfp_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Настройки моего первого плагина</h1>
        <form action="/ru/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mfp_settings_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

Опции регистрации и настройки обработки

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

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

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

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置组和选项
    register_setting( 'mfp_settings_group', 'mfp_settings', 'mfp_sanitize_settings' );

// 在插件设置页面添加一个节
    add_settings_section(
        'mfp_section_basic',
        '基本设置',
        null,
        'my-first-plugin'
    );

// 向节中添加一个字段
    add_settings_field(
        'mfp_greeting_text',
        '问候语文本',
        'mfp_greeting_text_render',
        'my-first-plugin',
        'mfp_section_basic'
    );
}
add_action( 'admin_init', 'mfp_settings_init' );

// 渲染问候语文本输入字段
function mfp_greeting_text_render() {
    $options = get_option( 'mfp_settings' );
    $value = isset( $options['greeting_text'] ) ? $options['greeting_text'] : '你好,世界!';
    echo '<input type="text" name="mfp_settings[greeting_text]" value="' . esc_attr( $value ) . '" class="regular-text">';
}

// 清理和验证设置输入
function mfp_sanitize_settings( $input ) {
    $sanitized = [];
    if ( isset( $input['greeting_text'] ) ) {
        $sanitized['greeting_text'] = sanitize_text_field( $input['greeting_text'] );
    }
    return $sanitized;
}

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

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

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

Используя WordPress… __()_e() Используйте такие функции, чтобы обработать все текстовые строки, требующие перевода, и правильно загрузить соответствующие текстовые поля.

Измените вашу функцию вывода так, чтобы она поддерживала перевод.

function mfp_display_greeting() {
    $options = get_option( ‘mfp_settings’ );
    $greeting = isset( $options[‘greeting_text’] ) ? $options[‘greeting_text’] : __( ‘你好,世界!’, ‘my-first-plugin’ );
    echo ‘<p>’ . esc_html( $greeting ) . ‘</p>’;
}

// 在插件加载时加载翻译文件
function mfp_load_textdomain() {
    load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );
}
add_action( ‘plugins_loaded’, ‘mfp_load_textdomain’ );

Оптимизация кода и создание пакетов для публикации

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

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

// 插件卸载时的清理操作
register_uninstall_hook( __FILE__, ‘mfp_uninstall’ );
function mfp_uninstall() {
    delete_option( ‘mfp_settings’ );
}

резюме

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

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

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

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

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

我必须使用类(Class)来编写插件吗?

Не обязательно. Для простых плагинов использование процедурного программирования (набора функций) вполне возможно; именно этот подход был применен в приведенных в статье примерах. Однако для более сложных, многофункциональных плагинов более подходящим вариантом является объектно-ориентированное программирование (ООП) с организацией кода на основе классов. Это позволяет более эффективно структурировать код, избежать конфликтов в именах элементов и повысить уровень его удобства обслуживания (надзора и модификаций).

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

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

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

Ключевые меры по обеспечению безопасности включают: постоянную проверку и очистку пользовательских вводимых данных (с использованием соответствующих методов обработки данных). sanitize_text_field(), esc_html(), wp_kses_post() (Функции ожидания и т. д.); используются для всех запросов к базам данных. $wpdb Методы класса используются для предотвращения взломов системы с помощью SQL-инъекций (с использованием соответствующих механизмов, таких как оператор `prepare`). Все динамически генерируемые данные, отображаемые в браузере, подвергаются обработке для удаления потенциально опасных символов (эскапированию). Кроме того, применяются встроенные механизмы безопасности WordPress, включая проверку нонсов (nonce-значений) и проверку прав пользователей.current_user_can()Эти меры используются для защиты форм и AJAX-запросов от несанкционированного доступа.