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

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

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

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

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

Настоятельно рекомендуется выполнять разработку на локальном компьютере, а не напрямую на онлайн-сервере. Для этого можно использовать такие инструменты, как XAMPP, MAMP, Local by Flywheel или Docker, чтобы быстро настроить локальную серверную среду с поддержкой PHP, MySQL, Apache и/или Nginx. Убедитесь, что версия PHP совместима с версией WordPress, для которой вы планируете создавать сайт; обычно официальный сайт WordPress рекомендует определенный диапазон версий PHP.

Выбор кодовых редакторов и инструментов

Выбор мощного кодового редактора крайне важен; подойдут такие инструменты, как VS Code, PhpStorm или Sublime Text. Они обычно обеспечивают выделение синтаксиса кода, предложения по его написанию, интеграцию с системами управления версиями и другие удобные функции. Кроме того, установка специальных фрагментов кода (сниппетов) или плагинов, связанных с WordPress, может значительно ускорить работу с этим фреймворком.add_actionadd_filterРазработка таких распространенных функций, как…

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

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

Каждый плагин для WordPress должен иметь главный PHP-файл, в начале которого должны быть указаны стандартные аннотации с информацией о плагине. Этот файл является точкой входа для выполнения кода плагина. Например, если мы планируем создать плагин под названием “My Custom Greeting”, главный файл может называться…my-custom-greeting.php

Ультахост (UltaHost) – хостинг-провайдер, предоставляющий услуги хостинга для сайтов, построенных на платформе WordPress.
Гарантия возврата средств в течение 30 дней, неограниченная пропускная способность интернет-канала и объем баз данных, бесплатная защита от DDoS-атак. При покупке на срок 3 лет предоставляется скидка в размере 501 ТБ до 4 ТБ.
<?php
/**
 * Plugin Name: My Custom Greeting
 * Plugin URI:  https://yourwebsite.com/my-custom-greeting
 * Description: 一个简单的插件,用于在网站前台显示自定义问候语。
 * Version:     1.0.0
 * Author:      Your Name
 * License:     GPL v2 or later
 * Text Domain: my-custom-greeting
 */

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

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

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

Использование классов для организации кода

Хотя вы можете использовать исключительно функциональный подход к программированию, более современным и рекомендуемым способом реализации является использование объектно-ориентированных (ОО) классов для обеспечения инкапсуляции функционала плагинов. Это позволяет избежать конфликтов в именах функций и делает структуру кода более понятной. Давайте создадим главный класс.My_Custom_Greeting

if ( ! class_exists( 'My_Custom_Greeting' ) ) {
    class My_Custom_Greeting {
        public function __construct() {
            // 构造函数,在这里挂载钩子
        }
    }
    // 初始化插件
    new My_Custom_Greeting();
}

! class_exists()Проверка предназначена для предотвращения дублирования определений классов.

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

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

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

Каталог плагинов и организация файлов

Разумная структура каталогов облегчает управление файлами и проектами. Типичный каталог плагинов может включать в себя следующие элементы:
Основной файл. my-custom-greeting.php (Расположено в корневой директории плагина)
- includes/ Каталог: содержит файлы с классами, реализующими основные функции программы.
- admin/ Каталог: содержит код, связанный с работой серверной части системы.
- public/ Каталог: содержит код, связанный с пользовательским интерфейсом (фронтендом).
- assets/ Каталог: здесь хранятся файлы CSS, JavaScript и изображения.
- languages/ Каталог: размещение файлов с международными переводами (.po/.mo)

Основные функции: практическое применение хуков и фильтров

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

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

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

Акционные хуки позволяют вам выполнять пользовательский код в определенные моменты времени — например, при инициализации приложения, загрузке страницы или публикации статьи. Мы используем их для автоматизации различных процессов в нашем приложении.add_action()Функция предназначена для монтирования (т. е. для подключения ресурсов к системе). Например, в…wp_footerДобавьте наше приветствие в место, где должен находиться хук (hook).

ВMy_Custom_GreetingМонтирование в конструкторе класса:

public function __construct() {
    add_action( 'wp_footer', array( $this, 'display_greeting' ) );
}

Затем определяется соответствующий метод обратного вызова (callback method).display_greeting

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

public function display_greeting() {
    $name = get_option( 'my_greeting_name', '访客' );
    echo '<p id="custom-greeting">Здравствуйте, %s! Добро пожаловать на наш сайт.</p>';
}

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

Фильтровые хаки (filter hooks) позволяют вам изменять данные, генерируемые WordPress или другими плагинами. Мы их используем для дополнительной настройки и обработки информации.add_filter()Функции. Например, функции для изменения стандартного суффикса заголовков статей.

add_filter( 'the_title', array( $this, 'modify_post_title' ), 10, 2 );

public function modify_post_title( $title, $id ) {
    if ( ! is_admin() && in_the_loop() ) {
        $title .= ' [推荐阅读]';
    }
    return $title;
}

Здесь указаны параметры.10Это вопрос приоритета.2Это означает, что функция-обратный вызов (callback function) принимает два параметра.$titleи$id)。

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

Создание пользовательских хуков (custom hooks)

Зрелый плагин также должен предоставлять собственные «хаки» (hooks), которые позволяют другим разработчикам расширять его функционал.do_action()Создайте хук для действия и используйте его.apply_filters()Создание фильтровых хуков (filter hooks).

// 在插件某处执行一个自定义动作
do_action( 'my_custom_greeting_before_display', $name );

// 提供一个可过滤的问候语文本
$greeting_text = apply_filters( 'my_custom_greeting_text', '你好,' . $name . '!', $name );

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

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

Добавить меню управления

пользоватьсяadd_action( ‘admin_menu’, … )Для добавления пунктов меню используются специальные “хаки” (механизмы взаимодействия с системой). Мы создали для плагина подменю, расположенное в разделе «Настройки».

add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );

public function add_admin_menu() {
    add_options_page(
        '自定义问候语设置', // 页面标题
        '问候语设置',       // 菜单标题
        'manage_options',   // 所需权限
        'my-custom-greeting', // 菜单slug
        array( $this, 'render_settings_page' ) // 回调函数,用于输出页面内容
    );
}

Создание страницы настроек и формы

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

add_action( 'admin_init', array( $this, 'register_settings' ) );

public function register_settings() {
    register_setting(
        'my_custom_greeting_options_group', // 选项组名
        'my_greeting_name',                 // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );
}

Затем в функции отображения страницы выводится форма:

public function render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h2>Настройка пользовательских приветствий</h2>
        <form method="post" action="/ru/options.php/" data-trp-original-action="options.php">
            <?php settings_fields( 'my_custom_greeting_options_group' ); ?>
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="greeting_name">Имя получателя приветствия</label></th>
                    <td>
                        <input type="text" id="greeting_name" name="my_greeting_name" value="<?php echo esc_attr( get_option( 'my_greeting_name', '访客' ) ); ?>" class="regular-text" />
                        <p class="description">Имя, введенное здесь, будет отображаться в приветствии на фронтенде.</p>
                    </td>
                </tr>
            </table>
            <?php submit_button(); ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

Добавить скрипты и таблицы стилей

Чтобы сделать интерфейс управления более эстетичным и интерактивным, необходимо добавить CSS и JavaScript на страницы настроек.admin_enqueue_scriptsМы используем специальные “хаки” (механизмы для взаимодействия с сайтом) и проверяем значение поля `slug` страницы, чтобы убедиться, что страница загружается исключительно при использовании нашего плагина.

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_assets' ) );

public function enqueue_admin_assets( $hook ) {
    if ( 'settings_page_my-custom-greeting' !== $hook ) {
        return;
    }
    wp_enqueue_style( 'my-custom-greeting-admin', plugin_dir_url( __FILE__ ) . 'assets/css/admin-style.css' );
    wp_enqueue_script( 'my-custom-greeting-admin', plugin_dir_url( __FILE__ ) . 'assets/js/admin-script.js', array( 'jquery' ), '1.0.0', true );
}

резюме

Следуя шагам, описанным в этой статье, мы завершили процесс разработки полноценного плагина для WordPress: от настройки среды разработки и создания базовой системы безопасности до реализации ключевых функций с использованием хуков действий (actions) и фильтров (filters), а также создания пользовательский удобного интерфейса управления. Суть разработки плагинов заключается в глубоком понимании системы хуков WordPress и соблюдении её стандартов безопасности и программирования. Начиная с этого простого плагина, вы можете постепенно расширять его функционал, добавляя новые классы, используя более сложные операции с базой данных, интегрируя REST API или создавая пользовательские блоки (например, блоки типа Gutenberg), и в конечном итоге создать мощный, легкий в обслуживании профессиональный плагин.

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

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

Как мой плагин совместим с различными версиями PHP?

Во время разработки следует избегать использования слишком новых или устаревших, заброшенных функций PHP. Ознакомьтесь с официальным руководством PHP, чтобы узнать минимальную версию PHP, для которой функция поддерживается. В основном файле плагина или в его документации можно указать требуемую версию PHP.Requires PHP:Используйте заголовочные теги для указания минимальной версии PHP, необходимой для работы плагина. Таким образом, WordPress выдаст предупреждение, если требования к версии PHP не будут удовлетворены.

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

WordPress использует фреймворк GNU gettext для реализации функций интернационализации (i18n). Для начала необходимо пометить все строки, которые требуют перевода, специальными метками.__()_e()или_x()Необходимо обернуть соответствующие функции в специальные оболочки (классы или модули). Затем с помощью инструментов, таких как Poedit, проанализировать код с целью генерации необходимых изменений..potШаблонные файлы; для каждого языка необходимо создать соответствующие версии этих файлов..poи.moФайл. Наконец, использовать его при загрузке плагина.load_plugin_textdomain()Загрузка и перевод функций.

Что следует учитывать при отправке плагина в официальный каталог WordPress?

Перед отправкой убедитесь, что код полностью соответствует стандартам кодирования и документационным рекомендациям WordPress. Плагин должен использовать лицензию GPLv2 или более совместимую с ней лицензию. Необходимо предоставить подробную информацию о плагине, включая его функционал, способы использования и любые другие важные сведения.readme.txtФайл включает в себя описание продукта, инструкции по установке, скриншоты, ответы на часто задаваемые вопросы и другую полезную информацию. Ваш код должен быть безопасным и не содержать вредоносного программного обеспечения; кроме того, основные функции продукта не должны зависеть от использования шорткодов (shortcodes) – продукт должен быть готов к использованию сразу после установки. После отправки вашего файла команда рецензентов проведет его тщательную проверку.