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

Читання за 3 хвилини.
2026-03-13
2026-06-04
2,369
Я заробляю комісію, коли ви робите покупки за посиланнями нижче, без додаткових витрат для вас.

Розуміння базової структури плагінів для WordPress

Перш ніж приступати до детального аналізу коду, дуже важливо зрозуміти основні складові WordPress-плагіна. Плагін по суті є одним або набором елементів, які розміщуються у системі WordPress для додавання нових функцій чи зміни існуючих.wp-content/plugins/У каталозі знаходяться PHP-файли. Їхня основа – головний файл, який містить метаінформацію про плагін; ця інформація передається системі WordPress за допомогою блоку коментарів у спеціальному форматі.

Основний вхідний файл плагіна; наприклад, ми назвали його…my-first-plugin.phpПлагін має містити певну заголовкову коментарну частину (header comment), яка визначає назву плагіна, його опис, версію, автора тощо. Ця коментарна частина є єдиним критерієм для розпізнавання та завантаження плагіна WordPress. Найпростіший плагін може складатися лише з цієї заголовкової частини; він використовує API WordPress (наприклад, дії-хвилі (Action Hooks) та фільтри-хвилі (Filter Hooks)) для модифікації чи розширення функціоналу вебсайту.

Функції плагінів можуть бути дуже простими – наприклад, додавання рядка тексту внизу сторінки – або надзвичайно складними, наприклад, створення повноцінної системи електронної комерції. Незалежно від складності, їх розробка відбувається за однією й тією ж основною схемою: спочатку створюється правильна структура файлів у відповідних місцях; потім пишеться код, який потім інтегрується у життєвий цикл системи WordPress; нарешті, за допомогою інтерфейсу адміністрування WordPress виконуються необхідні налаштування та налаштування.

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

Створіть свій перший плагін.

Давайте попрактикуємося створення найпростішого плагіна за допомогою класичного прикладу “Hello World”. Функція цього плагіна полягає у виведенні привітання вгорі тексту статті на кожній сторінці сайту.

UltaHost – хостинг для сайтів, побудованих на платформі WordPress
Гарантія повернення грошей протягом 30 днів, необмежена пропускна здатність мережі та доступ до баз даних, безкоштовний захист від DDoS-атак; знижка 50% при покупці на термін 3 роки (варіанти об’ємів трафіку: 4 ТБ/5

Спочатку вам потрібно це зробити локально або на сервері.wp-content/plugins/Створіть у каталозі нову папку під назвоюmy-hello-pluginПотім створіть у цьому папці головний PHP-файл; ми назвемо його…my-hello-plugin.php

Написати основний файл плагіна

Откройте.my-hello-plugin.phpЗавантажте файл та введіть наступний код. Цей код відповідає стандартній форматуванні плагінів для WordPress та містить заголовок інформації про плагін, а також код, який виконує його функції.

<?php
/**
 * Plugin Name:       我的问候插件
 * Plugin URI:        https://yourwebsite.com/my-hello-plugin
 * Description:       这是一个简单的插件,用于在文章内容前输出“您好,读者!”。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-hello-plugin
 */

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

/**
 * 在主文章内容前添加问候语。
 *
 * @param string $content 原始的文章内容。
 * @return string 添加了问候语后的新内容。
 */
function my_hello_add_greeting( $content ) {
    $greeting = &#039;<p style="background-color:#f0f8ff; padding:10px; border-left:4px solid #0073aa;"><strong>Вітаємо вас, читачу! Щиро дякуємо, що обрали цю статтю для читання.</strong></p>';
    // 只在主循环且是文章页面时添加
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'my_hello_add_greeting' );

Активуйте та протестуйте плагін.

Завантажте папку, яка містить цей файл, на сервер.wp-content/plugins/Каталог… Або, якщо ви розробляєте в локальному середовищі, просто розмістіть файл у відповідному місці. Потім увійдіть у панель керування WordPress та перейдіть до меню “Плагіни”. У списку плагінів ви повинні побачити плагін “My Greeting Plugin”. Натисніть кнопку “Увімкнути”.

Після активації, при відвідуванні будь-якої статті чи сторінки на веб-сайті, перед початком основного тексту статті з’явиться привітання на світло-блакитному тлі з лівим краєм. Цей процес чітко демонструє основні етапи розробки плагінів для WordPress: створення файлів, додавання функцій за допомогою спеціальних механізмів („хуків“) та їх активація у фоновому режимі. Ви успішно зробили перший крок у розробці плагінів для WordPress.

Рекомендуємо до прочитання. Розробка плагінів для WordPress: створення потужних розширень для вебсайтів з нуля до першого запуску.

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

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

Акційні хаки (action hooks) дозволяють вам вставляти та виконувати власний код у певні моменти часу під час роботи WordPress – наприклад, під час публікації статті чи завантаження сторінки.save_postДія виконується, коли стаття або сторінка зберігається в базі даних. Ви можете це зробити за допомогою відповідних механізмів програмування.add_action()Функція “монтує” вашу власну функцію на цей хук (hook).

Фільтрові хаки (filter hooks) дозволяють вам модифікувати дані, які генерує WordPress під час обробки вмісту. Ви реєструєте функцію у системі фільтрів, і коли WordPress виконує цей фільтр, він передає дані усім зареєстрованим функціям, а також отримує їхні результати після обробки. Саме це й було використано у прикладі вище.the_contentЦе типовий фільтр-хук, який дозволяє вам змінювати вміст статті, що має бути виведений.

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

Створіть простий інструмент для керування.

Справді корисний плагін зазвичай потребує деяких параметрів, які можна налаштувати користувачем. Це передбачає взаємодію з backend-системою WordPress. Ми продемонструємо, як додати сторінку зі своїми налаштуваннями, на прикладі простого прикладу.

Спочатку ми використовуємо…add_action(‘admin_menu’, …)Зареєструйте функцію, яка буде створювати нові пункти меню у системі керування.

/**
 * 在WordPress后台添加一个自定义菜单页面。
 */
function my_hello_add_admin_menu() {
    add_menu_page(
        ‘问候插件设置’, // 页面标题
        ‘问候插件’,     // 菜单标题
        ‘manage_options’, // 所需权限
        ‘my-hello-plugin’, // 菜单slug
        ‘my_hello_admin_page_html’, // 用于显示页面内容的回调函数
        ‘dashicons-format-chat’, // 图标(可选)
        80 // 菜单位置(可选)
    );
}
add_action( ‘admin_menu‘, ’my_hello_add_admin_menu’ );

/**
 * 自定义设置页面的HTML输出。
 */
function my_hello_admin_page_html() {
    // 检查用户权限
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?&gt;
    <div class="“wrap”">
        <h1><p><strong>  <p><strong></h1>
        <form action="/uk/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
            <?php
            // 输出设置字段、安全性和保存更改按钮
            settings_fields( ‘my_hello_options’ );
            do_settings_sections( ‘my-hello-plugin’ );
            submit_button( ‘保存问候语设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="uk"/></form>
    </div>
    &lt;?php
}

Поля для налаштувань реєстрації та виводу

Просто мати сторінки недостатньо; нам потрібно створити параметри, які можна буде зберігати. Для цього знадобиться використати певні інструменти чи методи програмування.add_action(‘admin_init’, …), а такожregister_setting()add_settings_section()add_settings_field()Серія функцій.

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

/**
 * 初始化插件的设置。
 */
function my_hello_settings_init() {
    // 注册一个设置项到数据库的‘my_hello_options’键下
    register_setting( ‘my_hello_options‘, ’my_hello_greeting_text’ );

// 在页面中添加一个设置区域
    add_settings_section(
        ‘my_hello_section’, // 区域ID
        ‘问候语设置’,        // 区域标题
        ‘my_hello_section_html’, // 区域描述的回调函数
        ‘my-hello-plugin’ // 所属页面slug
    );

// 在区域内添加一个具体的设置字段
    add_settings_field(
        ‘my_hello_field’, // 字段ID
        ‘自定义问候语’,    // 字段标签
        ‘my_hello_field_html’, // 用于渲染字段HTML的回调函数
        ‘my-hello-plugin’, // 所属页面slug
        ‘my_hello_section’ // 所属区域ID
    );
}
add_action( ‘admin_init‘, ’my_hello_settings_init’ );

/**
 * 设置区域的描述信息。
 */
function my_hello_section_html() {
    echo ‘<p>Тут ви можете встановити текст привітання, який буде відображатися на початку статті.</p>’;
}

/**
 * 渲染设置字段的HTML。
 */
function my_hello_field_html() {
    // 从数据库获取已保存的值,如果没有则使用默认值
    $greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    ?&gt;
    <input type="‘text’"
           id="‘my_hello_greeting_text’"
           name="‘my_hello_greeting_text’"
           value="“NO NUMERIC NOISE KEY" 1000”
 class="“regular-text”" />
    <p class="“description”">Будь ласка, введіть привітання, яке ви бажаєте показати перед основним текстом статті.</p>
    &lt;?php
}

Зараз у нас вже є сторінка налаштувань бекенду з введенням даних. Наступним кроком є модифікація початкових функціональних модулів (функцій).my_hello_add_greetingНехай воно зчитує привітання з списку опцій у базі даних.

function my_hello_add_greeting( $content ) {
    // 获取保存的自定义问候语,如果不存在则使用默认值
    $custom_greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    $greeting = ‘<p style="“background-color:#f0f8ff;" padding:10px; border-left:4px solid #0073aa;”><strong>’. esc_html( $custom_greeting )‘. ‘</strong></p>’;
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}

На цьому етапі плагін із базовими функціями налаштування бекенду готовий до використання. Користувачі можуть самостійно змінювати текст вітань у меню “Плагін вітань” на бекенді, а нові налаштування будуть автоматично застосовуватися до статей на фронтенді.

Міжсерверний віртуальний хостинг
Віртуальний хостинг $2.50 USD на місяць, перший місяць $0.1 USD за промокодом tryinterserver, 461 скрипт хмарних додатків, встановлення в один клік.

Найкращі практики та аспекти безпеки розробки плагінів

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

Аспекти безпеки

Безпека є головним принципом. Ніколи не довіряйте даним, введеним користувачем. Усі дані, отримані від користувача (наприклад…)$_GET$_POST$_COOKIEПеред використанням даних у запитах до баз даних, їх виведенням на сторінки чи виконанням операцій з файлами необхідно виконати належну обробку: очищення, перевірку та ескапування символів.

Для даних, які виводяться на HTML-сторінку, використовуйте…esc_html()esc_attr()wp_kses_post()Функції для ескапування слід використовувати для обробки даних перед їх передачею в базу даних. Для змінних, які використовуються у запитах до бази даних, обов’язково необхідно застосовувати механізми ескапування, щоб уникнути можливих пр$wpdb->prepare()Під час виконання параметризованих запитів ніколи не варто безпосередньо об’єднувати змінні з SQL-запитом. У плагінах слід завжди використовувати відповідні механізми для передачі параметрів до SQL-коду.defined(‘ABSPATH’) or die;Це робиться для запобігання прямому доступу до файлів.

Організація коду та його інтернаціоналізація

З ростом кількості функцій плагінів стає складним підтримувати весь код у одному основному файлі. Раціональніше розділити код за функціями на окремі файли. Зазвичай основний файл відповідає за визначення „хаків“ (hooks) та основних процесів, а на інші файли поміщаються сторінки налаштувань, функції, визначення класів тощо.includes/admin/public/У таких підкаталогах, і через…require_onceВпровадження.

Щоб ваш плагін міг використовуватися користувачами по всьому світу, необхідно підтримувати інтернаціоналізацію (i18n). Це означає, що всі текстові рядки, які відображаються у плагіні, мають форматуватися за допомогою функцій перекладу WordPress.__()_e()Пакувати товар та надавати всі необхідні документи для доставки.Text DomainВстановіть унікальний ідентифікатор (наприклад, назву каталогу плагінів). У блоку коментарів на початку файлу ми вже це визначили.Text Domain: my-hello-pluginУ коді це слід використовувати наступним чином:

$ вітання = ‘<p><strong>’ . esc_html__( ‘您好,读者!欢迎阅读本文。’ , ’my-hello-plugin’ ) . ‘</strong></p>’;

Таким чином, перекладачі зможуть користуватися цими можливостями..po.moФайли містять переклади вашого плагіна на різні мови.

Оптимізація продуктивності.

Плагіни повинні мінімізувати вплив на продуктивність веб-сайту. Слід уникати виконання великої кількості запитів до бази даних чи складних обчислень під час кожного завантаження сторінки, особливо на стороні клієнта (фронтенді). Раціонально використовуйте API тимчасового кешування (Transients API) WordPress для зберігання результатів запитів, які змінюються нечасто. Наприклад, якщо ви хочете зберегти результати виконання API-запиту в кеші, можете зробити це наступним чином:

$data = get_transient( ‘my_plugin_api_data’ );
if ( false === $data ) {
    // 数据不存在或已过期,从API获取
    $data = wp_remote_retrieve_body( wp_remote_get( ‘https://api.example.com/data’ ) );
    // 将数据存储12小时
    set_transient( ‘my_plugin_api_data’, $data, 12 * HOUR_IN_SECONDS );
}
// 使用 $data

Крім того, переконайтеся, що ваші файли CSS та JavaScript завантажуються лише на тих сторінках, де це необхідно. Використовуйте відповідні механізми для контролю завантаження цих файлів.wp_enqueue_script()wp_enqueue_style()Функція, доповнена відповідними хуками (наприклад…wp_enqueue_scriptsДля завантаження фронтенд-ресурсів використовується спеціальний механізм; щодо бекенд-ресурсів – то там застосовуються інші підходи.admin_enqueue_scriptsХук.

підсумок

За допомогою поетапних інструкцій, наведених у цій статті, ми пройшли повний шлях розробки від простого плагіна “Hello World” до практичного плагіна, який має можливості налаштування на серверному рівні та дотримується основних принципів безпеки та організації коду. Ключовим елементом є розуміння та використання основних механізмів WordPress – системи хуків (hooks). Вона дозволяє нам розширювати функціонал платформи модульним та неперешкоджаючим способом. Чи йдеться про модифікацію контенту (фільтри) чи виконання певних завдань (дії), хуки виступають посередниками між вашим кодом та системою WordPress.

Пам’ятайте: розробка якісних плагінів – це не просто запуск їх функцій. Це також вимагає суворого оброблення даних, введених користувачем, чіткого організаційного структурування коду, підтримки міжнародної локалізації та ретельного аналізу продуктивності веб-сайту. Від чіткого визначення структури файлів плагіна до використання стандартних API для створення меню та налаштувань, аж до безпечного форматування вихідних даних – кожен крок впливає на якість, безпеку та користувацький досвід плагіна. Продовжуючи досліджувати численні API та функції WordPress, ви зможете створювати потужні та надійні плагіни.

Часті запитання

Які базові знання та навички необхідні для розробки плагінів?

Вам потрібні базові знання мови програмування PHP, включаючи змінні, функції, масиви, умовні оператори та цикли – це ключові елементи програмування на цій мові. Також буде корисним мати базове розуміння HTML та CSS, адже плагіни часто використовуються для створення чи зміни переднього інтерфейсу сайту. Знання основ використання WordPress та його архітектури ззаду допоможуть зробити процес розробки більш ефективним.

Як налаштувати та виправити помилки у своєму плагіні для WordPress?

По-перше, переконайтеся, що у вас є все необхідне…wp-config.phpУ файлі увімкнений режим налагодження WordPress. Це було зроблено шляхом встановлення відповідних параметрів.define('WP_DEBUG', true);define('WP_DEBUG_LOG', true);Повідомлення про помилку буде зареєстровано.wp-content/debug.logУ файлі це безпечніше, ніж просто відображати дані безпосередньо на сторінці. Крім того, це можна поєднувати з іншими методами забезпечення безпеки.error_log()Функції виводять значення змінних на екран, або можна використовувати панелі “Мережа” та “Консоль” у розробницьких інструментах браузера для перевірки проблем із передньою частиною програми (фронтендом) та її стилем.

Чи можу я завантажити плагін, який я розробив, до офіційного каталогу плагінів?

Так, але для цього необхідно відповідати офіційним вимогам WordPress щодо подання плагінів. Це включає переконанняся, що ваш плагін відповідає ліцензії GPL, дотримується стандартів кодування WordPress, має безпечний код та не містить шкідливого контенту, а також надання чітких документаційних інструкцій. Перед поданням рекомендуємо уважно прочитати розділи для розробників плагінів та посібники з подання, які надаються офіційним сайтом WordPress. Процес подання плагіна проходить через систему для подання плагінів на сайті WordPress.org, де плагін піддається перевірці.

У чому різниця між функціями плагінів та тем? Коли варто розробляти плагіни?

Тема (Theme) в основному визначає зовнішній вигляд та структуру веб-сайту; вона включає у себе шаблони, таблиці стилів (style sheets) та деякі функції, пов’язані з відображенням інформації. Плагіни (Plugins), навпаки, призначені для додавання чи модифікації функціоналу сайту, і їх вплив здебільшого не залежить від обраної теми. Існує гарне правило: якщо певна функція безпосередньо пов’язана з зовнішнім виглядом сайту (наприклад, макет сторінок, колірна схема), її краще розмістити у складі теми; якщо ж це універсальна, незалежна функція (наприклад, форма для зв’язку, оптимізація для пошукових систем, механізми кешування), яка має працювати незалежно від теми, її слід розробити у вигляді плагіна. Це допомагає зберегти розділення функціоналу від дизайну та підвищує гнучкість сайту.