Начнем с нуля: создание вашего первого плагина для WordPress.

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

Начнем с нуля: создание вашего первого плагина для WordPress.

Разработка плагинов для WordPress является основным способом расширения функционала этого системного блога. Создавая плагины, разработчики могут добавлять пользовательские функции на сайт без необходимости изменения шаблонов или основных файлов WordPress, что обеспечивает независимость и портативность этих функций. Стандартный плагин обычно состоит из одного основного PHP-файла, необязательных ресурсных файлов (например, CSS- и JavaScript-файлов) и языковых пакетов. Понимание базовой структуры плагина является первым шагом на пути к успешной разработке.

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

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

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

Главный файл каждого плагина должен начинаться с определенного блока 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
 */

Среди них,Plugin NameЭти поля являются обязательными; остальные поля же являются необязательными. Однако для обеспечения полноты функционала и профессионального вида плагина рекомендуется заполнять все поля как можно полнее.Text DomainИспользуется для интернационализации и является основой для последующего перевода дополнительных модулей (плагинов).

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

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

Во-первых, в/wp-content/plugins/Создайте новую папку в каталоге, например,my-first-pluginЗатем в этой папке создайте главный PHP-файл, обычно с тем же названием, что и папка:my-first-plugin.phpВставьте вышеуказанные комментарии в начало файла, сохраните его, и затем вы сможете увидеть этот плагин на странице “Плагины” в интерфейсе WordPress и активировать его. Однако в настоящее время у него нет никаких функций.

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

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

Понимание и использование действий-хуков (action hooks)

Акционные хаки (action hooks) позволяют выполнять пользовательский PHP-код в определенные моменты времени или при наступлении определенных событий. Вы можете использовать их для автоматизации различных процессов в вашем приложении.add_action()Функция позволяет “присоединить” вашу собственную функцию к определенному механизму обработки данных (например, к “хуку”). Например, это может быть использовано для автоматического добавления определенного текста в конце статьи.

function myplugin_add_footer_text( $content ) {
    if ( is_single() ) {
        $content .= '<p>Спасибо за прочтение!</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_footer_text' );

Обратите внимание: в этом примере для изменения содержимого используется фильтрующий хук. Типичным примером использования действий-хуков (action hooks) является добавление меню в интерфейс административной панели.

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

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',
        '我的插件',
        'manage_options',
        'myplugin-settings',
        'myplugin_settings_page'
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

Здесь,add_action()Преобразуйте функцию в следующий вид:myplugin_add_admin_menuПривязать кadmin_menuЭтот хук для выполнения определенных действий будет вызван системой WordPress во время создания внутреннего меню сайта.

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

Фильтр-хаки (filter hooks) предназначены для изменения данных, генерируемых WordPress в процессе обработки. Вы можете их использовать для выполнения различных действий с этими данными.add_filter()Функция предназначена для монтирования (т. е. использования) вашей собственной функции. Функция фильтрации принимает входное значение, изменяет его и затем должна возвращать измененное значение. Например, изменение заголовка статьи:

function myplugin_modify_title( $title ) {
    return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

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

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

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

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

Создание меню и страниц управления

Во-первых, вам нужно использоватьadd_menu_page()илиadd_options_page()Для создания страницы управления используются такие функции. Обычно эту операцию монтируют (то есть привязывают к соответствующим системным механизмам)…admin_menuКак показано в предыдущем примере, на крючке…myplugin_settings_pageЭто функция-обратный вызов (callback), предназначенная для отображения HTML-контента страницы настройок.

Регистрация параметров с использованием API Settings

API для настроек предоставляет безопасный способ регистрации, проверки и сохранения параметров настроек. Основные шаги включают в себя использование…register_setting()Зарегистрируйте группу настроек и используйте её.add_settings_section()Добавьте блок настроек и используйте его.add_settings_field()Добавьте конкретные поля настроек.

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

function myplugin_settings_init() {
    // 注册一个设置
    register_setting( 'myplugin_settings', 'myplugin_options' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个设置字段
    add_settings_field(
        'myplugin_field_text',
        '欢迎语',
        'myplugin_field_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Затем вам необходимо написать соответствующие функции-обратные вызовы (callback functions).myplugin_section_general_cbиmyplugin_field_text_cbВыведите HTML-поле для ввода описания блока и полей. Наконец, вmyplugin_settings_pageВ функции используется…settings_fields()иdo_settings_sections()Функция предназначена для вывода всей формы на экран.

Безопасность плагинов и рекомендуемые практики их использования

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

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

Проверка данных, их очистка и экранирование.

Никогда не доверяйте данным, введённым пользователем, или данным, полученным из базы данных. При обработке любых входных данных (например, $_POST, $_GET) необходимо их проверять и очищать. WordPress предоставляет множество функций для этой цели.sanitize_text_field(), intval(), wp_kses()При выводе данных в HTML или JavaScript необходимо выполнить их экранирование (эскапирование) с использованием соответствующих функций.esc_html(), esc_attr(), esc_js()иwp_json_encode()

// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );

// 安全地输出数据
echo esc_html( get_option( 'my_option' ) );

Использование нестандартных методов проверки прав доступа (не основанных на стандартах CE).

Для всех запросов в виде форм, отправляемых в фоновом режиме, или AJAX-запросов, используемых плагинами, необходимо применять механизм проверки подлинности и уникальности запросов (nonce) от WordPress. Это предотвращает атаки типа кросс-сайтового скриптинга (CSRF). Кроме того, следует использовать…current_user_can()Функция проверяет, имеет ли текущий пользователь необходимые права для выполнения данной операции.

// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
    if ( ! isset( $_POST['myplugin_nonce'] ) ||
         ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
         ! current_user_can( 'manage_options' ) ) {
        wp_die( '安全校验失败。' );
    }
    // ... 安全地处理数据 ...
}

резюме

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

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

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

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

WordPress использует фреймворк GNU gettext для реализации функций интернационализации. Для этого сначала необходимо определить необходимые параметры в примечаниях, расположенных в начале файла плагина.Text DomainВ коде плагина для всех строк, которые необходимо перевести, используйте соответствующие механизмы обработки текста.__()Провести перевод._e()Переведите текст, а затем используйте такой инструмент, как Poedit, чтобы извлечь строки из исходного кода плагина и сгенерировать необходимый результат..potШаблонные файлы; для каждого языка необходимо создать соответствующие версии этих файлов..poИ после компиляции.moФайл должен быть помещён в плагин./languages/Внутри каталога.

Как избежать конфликтов между именами классов в плагинах?

Чтобы избежать конфликтов между именами классов, функций и констант, рекомендуется использовать пространства имен или добавлять уникальные префиксы к всем идентификаторам. Начиная с PHP 5.3, использование пространств имен является обязательным. Например, для объявления элемента кода:namespace MyPluginAdmin;Если учитывать совместимость, необходимо использовать префикс, который должен быть достаточно уникальным. Например, можно использовать комбинацию аббревиатур названия компании и названия плагина:function acme_myplugin_init() {}Имя класса определяется следующим образом:class Acme_MyPlugin_Admin_Settings {}

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

Лучшее время для создания пользовательской таблицы — это при активации плагина. Вы можете заключить код, необходимый для создания таблицы, в функцию и использовать эту функцию в нужном месте.register_activation_hook()Функция предназначена для регистрации. Внутри этой функции используются соответствующие механизмы для выполнения необходимых действий.dbDelta()Эта функция предназначена для безопасного создания или обновления структуры таблицы и требует использования очень конкретного формата SQL-запросов. Обязательно соблюдайте все правила форматирования, указанные в документации к функции.$wpdb->prefixДавайте добавим префикс сайта к именам таблиц, чтобы поддерживать работу в многосайтовой среде.