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

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

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

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

Создайте локальную среду разработки

Рекомендуется использовать пакеты программного обеспечения для локальных серверов, такие как Local by Flywheel, XAMPP или MAMP. Эти инструменты позволяют одним кликом установить полноценную среду, включающую PHP, MySQL, Apache и/или Nginx. Убедитесь, что версия PHP соответствует требованиям вашей целевой версии WordPress; обычно рекомендуется использовать PHP 7.4 или более новые версии для получения лучшей производительности и поддержки безопасности.

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

Каждый плагин для WordPress должен иметь главный файл, который является точкой входа в плагин. Этот файл необходимо разместить в определенном месте в структуре проекта. wp-content/plugins Плагин следует разместить в отдельной папке внутри каталога и назвать его уникальным именем. Например, если вы хотите создать плагин под названием “Приветствия” (Greetings), вы можете создать папку с названием «Greetings» и внутри нее разместить все необходимые файлы плагина. my-first-plugin Откройте нужную папку и создайте в ней главный файл. my-first-plugin.php

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

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

Ультахост (UltaHost) – хостинг-провайдер, предоставляющий услуги хостинга для сайтов, построенных на платформе WordPress.
Гарантия возврата средств в течение 30 дней, неограниченная пропускная способность интернет-канала и объем баз данных, бесплатная защита от DDoS-атак. При покупке на срок 3 лет предоставляется скидка в размере 501 ТБ до 4 ТБ.
<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的简单插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

Основная структура плагина и механизм хуков (hooks)

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

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

Крючки (hooks) в основном делятся на два типа: действия (Actions) и фильтры (Filters). Действия-крючки выполняют ваш код при наступлении определенных событий, например, при публикации статьи или загрузке интерфейса администрирования. Вы используете их для автоматизации определенных процессов в вашем приложении. add_action() Функции используются для монтирования (т. е. для присоединения данных к определённым структурам или системам). Фильтр-хаки (filter hooks) предназначены для изменения данных; они позволяют вам изменять их значения перед тем, как данные будут отправлены в базу данных или в браузер. Вы используете эти инструменты для обработки информации на этапе передачи. add_filter() Функция предназначена для монтирования (подключения) ресурсов.

Например, чтобы добавить пользовательский текст в нижнюю часть страницы веб-сайта, можно воспользоваться следующим методом: wp_footer Этот хук для выполнения определенных действий:

function myplugin_add_footer_text() {
    echo '<p style="text-align:center;">Благодарим вас за использование нашего сайта!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

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

Многие плагины требуют наличия страницы настроек в административной панели WordPress. Обычно это достигается путем их подключения (монтирования) к соответствующим системным модулям или функциям WordPress. admin_menu Для реализации этого необходимо использовать действия-хаки (action hooks). Вам нужно определить функцию и использовать её внутри этих хаков. add_menu_page() или add_options_page() Для регистрации страницы используйте такие функции, а также определите другую функцию, которая будет выводить HTML-контент страницы.

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

Функция myplugin_add_admin_menu() {
    add_options_page(
        'Настройки моего плагина', // Название страницы
        'Мой плагин', // Название меню
        'manage_options', // Права доступа
        'myplugin-settings', // Псевдоним меню
        'myplugin_render_settings_page' // Функция для отображения содержания страницы
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

function myplugin_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( 'myplugin_settings_group' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ru"/></form>
    </div>
    &lt;?php
}

Реализация функций плагина и обработка данных

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

Использование API настроек для сохранения параметров

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

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

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

add_settings_section(
        'myplugin_section',
        '基础设置',
        null,
        'myplugin-settings'
    );

add_settings_field(
        'myplugin_field_greeting',
        '问候语',
        'myplugin_field_greeting_render',
        'myplugin-settings',
        'myplugin_section'
    );
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );

function myplugin_field_greeting_render() {
    $value = get_option( ‘myplugin_greeting_text’, ‘你好,世界!’ );
    echo ‘<input type=“text” name=“myplugin_greeting_text” value=“’ . esc_attr( $value ) . ‘” />’;
}

Создание пользовательских таблиц в базе данных

Для плагинов, которым необходимо хранить сложные данные в формате реляционных таблиц, возможно потребуется создание пользовательских таблиц базы данных. Обычно это происходит при активации плагина. Вам потребуется написать функцию и подключить её к системным хукам регистрации и активации WordPress. dbDelta() Функция предназначена для выполнения SQL-запросов, создающих или обновляющих таблицы, и способна интеллектуально обрабатывать изменения в структуре таблиц.

Во-первых, зарегистрируйте хук активации в вашем основном плагине:

register_activation_hook( __FILE__, ‘myplugin_create_database_table’ );

Затем определим функцию для создания таблицы:

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

function myplugin_create_database_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . ‘myplugin_data’;
    $charset_collate = $wpdb->get_charset_collate();

$sql = “CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name varchar(100) NOT NULL,
        email varchar(100) NOT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        PRIMARY KEY (id)
    ) $charset_collate;”;

require_once( ABSPATH . ‘wp-admin/includes/upgrade.php’ );
    dbDelta( $sql );
}

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

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

Применение наилучших практик безопасности

Безопасность является одним из главных приоритетов при разработке плагинов. Всегда проверяйте вводимые пользователем данные (проверяйте их формат) и очищайте их (удаляйте вредоносные элементы). Используйте функции, предоставляемые WordPress. esc_html()esc_attr()sanitize_text_field() Для вывода или обработки данных при выполнении запросов к базе данных используются специальные инструменты и методы. $wpdb->prepare() Методы предотвращения атак типа SQL-инъекций. Кроме того, используйте… current_user_can() Проверьте права пользователей и убедитесь, что только уполномоченные пользователи могут выполнять секретные операции.

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

Реализация интернационализации плагина

Чтобы ваш плагин мог использоваться пользователями по всему миру, необходимо подготовить его к работе в международных языковых условиях (иностранной локализации, i18n). Это означает, что все строки, предназначенные для пользователей, не должны напрямую содержаться в коде, а должны быть обернуты в функции перевода, предоставляемые системой WordPress. Самыми распространенными такими функциями являются… () Используется для отображения результатов перевода.() Для получения переведенного текста, а также… _e() Для прямого вывода перевода.

В вашем коде следует писать так:

$greeting = __( ‘你好,世界!’, ‘my-first-plugin’ );
echo esc_html( $greeting );

_e( ‘设置已保存。’, ‘my-first-plugin’ );

Обратите внимание: второй параметр функции перевода – “домен текста” (Text Domain) – должен совпадать с тем, который определен в комментариях, расположенных в начале плагина. Text Domain Полностью согласен. Затем вы можете использовать такие инструменты, как Poedit, для создания нужного результата. .pot Шаблонный файл, предназначенный для создания переводчиками. .po и .mo Переводите документы.

резюме

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

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

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

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

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

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

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

Чтобы избежать конфликтов между именами функций, классов и констант, всегда следует использовать уникальные префиксы. Оптимальной практикой является применение названий плагинов или их аббревиатур в качестве префиксов. Например, если ваш плагин называется “Awesome Slider”, вы можете использовать префикс вида “AwesomeSlider-”. as_ или awesome_slider_ Это префикс, используемый для всех пользовательских функций. То же самое принципы следует применять и к именам классов.

Можно ли отправить платный плагин в официальный каталог плагинов WordPress?

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