Посібник з розробки плагінів для WordPress: шлях від початківця до майстра

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

Щоб розробити плагін для WordPress, спочатку потрібно зрозуміти його основну структуру. Плагін по суті являє собою один або кілька PHP-файлів, які дотримуються певних стандартів WordPress та взаємодіють з основною частиною системи за допомогою системи хуків (Hooks), що дозволяє розширювати або змінювати функціонал веб-сайту. Для розробки плагіна необхідно принаймні один головний файл, який містить стандартні коментарі, що визначають структуру плагіна; саме ці коментарі є ключовими для ідентифікації плагіна системою WordPress.

Створення вашого першого плагіна

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

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

По-перше, у каталозі встановлення WordPress потрібно знайти файл…wp-content/pluginsУ цьому папці створіть новий папірець, наприклад…my-first-pluginУ цьому папці створіть файл під назвоюmy-first-plugin.phpГоловний PHP-файл. Ім’я цього файлу зазвичай збігається з ім’ям папки.

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

Откройте.my-first-plugin.phpФайл: Введіть наступну інформацію про стандартну заголовкову частину плагіна:

UltaHost – хостинг для сайтів, побудованих на платформі WordPress
Гарантія повернення грошей протягом 30 днів, необмежена пропускна здатність мережі та доступ до баз даних, безкоштовний захист від DDoS-атак; знижка 50% при покупці на термін 3 роки (варіанти об’ємів трафіку: 4 ТБ/5
<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习的简单Hello World插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

Цей коментар є надзвичайно важливим. WordPress виконує сканування…wp-content/pluginsта всіх PHP-файлів у їхніх підкаталогахPlugin Name:Цей плагін виявляє інші плагіни та відображає їх на сторінці керування плагінами у фоновому режимі.

Реалізація базових функцій та активація хуків (activation hooks)

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

Під коментарями у верхній частині коду додайте наступний код:

// 定义一个函数,在页脚输出信息
function my_first_plugin_display_footer_text() {
    echo '<p style="text-align: center;">Ласкаво просимо до використання мого першого плагіна для WordPress!</p>';
}
// 使用 ‘wp_footer’ 动作钩子挂载我们的函数
add_action( 'wp_footer', 'my_first_plugin_display_footer_text' );

// 插件激活时执行的操作
function my_first_plugin_activate() {
    // 可能在这里创建数据库表、设置默认选项等
    update_option( 'my_first_plugin_installed', current_time( 'mysql' ) );
}
register_activation_hook( __FILE__, 'my_first_plugin_activate' );

// 插件停用时执行的操作
function my_first_plugin_deactivate() {
    // 清理临时数据,但保留可能由用户创建的数据
    delete_option( 'my_first_plugin_installed' );
}
register_deactivation_hook( __FILE__, 'my_first_plugin_deactivate' );

Зараз увійдіть у свій WordPress-бекенд, перейдіть на сторінку “Плагіни” (Plugins), і там ви повинні побачити плагін під назвою “Мій перший плагін” (My First Plugin). Натисніть “Увімкнути” (Enable). Потім перейдіть на фронтенд вашого веб-сайту та прокрутіть сторінку вниз – ви повинні побачити доданий вами користувацький текст. Цей простий приклад демонструє основний процес створення та активації плагіна.

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

Глибоке розуміння системи хуків (hooks) WordPress

Хаки (hooks) є основою розробки плагінів для WordPress. Вони дозволяють вставляти власний код у певні моменти виконання основного коду системи, без необхідності змін самого ядра програми. Хаки поділяються на два основні типи: дії (Actions) та фільтри (Filters).

Використання дій-хуків (action hooks)

Акційні хаки виконуються під час певних подій, наприклад, під час публікації статті чи завантаження верхньої/нижньої частини сторінки. Вони не призначені для повернення жодних значень; їхня основна функція – просто виконати певний блок коду. Ми вже використовувwp_footerЦей хакерський інструмент („акційний хак“) призначений для виконання певних дій на системі.

Ще одним поширеним прикладом є…initФункція-«хвіст» (hook) виконується під час ініціалізації WordPress та часто використовується для реєстрації власних типів статей чи категорій.

hosting.com Віртуальний хостинг
Висока продуктивність завдяки процесорам AMD EPYC, SSD-накопичувачам NVMe і технології LiteSpeed, цілодобова експертна підтримка, розширені заходи безпеки, включаючи SSL, грубу силу, захист від шкідливих програм і DDoS, економія до 73%.
function my_plugin_custom_init() {
    // 在这里注册自定义文章类型
}
add_action( 'init', 'my_plugin_custom_init' );

Акційні хаки працюють через…add_action( $hook_name, $function_to_add, $priority, $accepted_args )Монтування функцій.

Використання фільтрів-хуків

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

function my_plugin_add_disclaimer_to_content( $content ) {
    if ( is_single() ) {
        $disclaimer = '<p><em>Цей текст був оброблений моїм плагіном.</em></p>';
        $content .= $disclaimer;
    }
    return $content; // 必须返回修改后的内容
}
add_filter( 'the_content', 'my_plugin_add_disclaimer_to_content' );

Фільтр-хаки працюють коректно.add_filter( $hook_name, $function_to_add, $priority, $accepted_args )Монтування функцій. Пріоритет$priorityВизначається порядок виконання кількох функцій, підключених до одного хака (hook). Чим менший номер, тим вищий пріоритет.

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

Архітектура плагінів та найкращі практики забезпечення безпеки

У міру того, як функціонал плагінів стає більш складним, наявність якісної архітектури та суворих заходів безпеки є ключовими факторами для забезпечення їх стабільності, здатності до обслуговування та безпеки.

Використовувати об’єктно-орієнтоване програмування

对于功能丰富的插件,建议使用类(Class)来组织代码。这有助于封装功能,避免函数名冲突,并使代码结构更清晰。

Міжсерверний віртуальний хостинг
Віртуальний хостинг $2.50 USD на місяць, перший місяць $0.1 USD за промокодом tryinterserver, 461 скрипт хмарних додатків, встановлення в один клік.
&lt;?php
/**
 * Plugin Name: 高级示例插件
 */
if ( ! class_exists( &#039;Advanced_Sample_Plugin&#039; ) ) {
    class Advanced_Sample_Plugin {
        public function __construct() {
            // 在构造函数中挂载钩子
            add_action( &#039;wp_footer&#039;, array( $this, &#039;display_message&#039; ) );
            add_filter( &#039;the_title&#039;, array( $this, &#039;modify_title&#039; ) );
        }

public function display_message() {
            echo &#039;<p>Повідомлення від класу високорівневих плагінів.</p>';
        }

public function modify_title( $title ) {
            return '前缀 - ' . $title;
        }
    }
    // 初始化插件类
    new Advanced_Sample_Plugin();
}

Впровадження заходів безпеки

Безпека плагінів для WordPress є надзвичайно важливою. Основне правило: ніколи не довіряйте даним, введеним користувачем. Усі дані, які надходять від користувачів, мають піддаватися перевірці на наявність шкідливого коду чи зл$_GET$_POST$_COOKIEДані, отримані з так званих ультракласних (суперглобальних) змінних, мають бути перевірені, очищені та піддані процедурі ескапування.

1. Перевірка: Переконайтеся, що дані відповідають очікуваному формату (наприклад, чи є це електронна адреса чи число). Використовуйте відповідні методи для перевірки.sanitize_email()is_email()Функції типу “wait” тощо.
2. Очищення: видаліть з даних недійсні або небезпечні символи. Для текстових введень використовуйте відповідні методи обробки даних.sanitize_text_field()Для контенту, у якому дозволено використання HTML, слід використовувати…wp_kses_post()wp_kses()
3. Ескапування: Перед виведенням даних у HTML, JavaScript або URL переконайтеся, що вони були безпечно закодовані. Використовуйте відповідні методи ескапування для запобігання помилкам та зловживанням.esc_html()esc_js()esc_url()Функції типу “wait” тощо.

Наприклад, обробка атрибута, який представляє собою скорочену назву:

function my_shortcode_handler( $atts ) {
    // 使用 shortcode_atts 设置默认值并提取属性
    $atts = shortcode_atts( array(
        'url' =&gt; '#',
    ), $atts, 'my_shortcode' );

// 清理并转义 URL 属性
    $clean_url = esc_url( $atts['url'] );

return "<a href='/uk/{$clean_url}/'>Безпечний посилання</a>"php
add_shortcode('my_shortcode', 'my_shortcode_handler');

Додати інтерфейс керування для плагіна та підтримку міжнародної локалізації.

Зрілий плагін зазвичай потребує налаштувальних параметрів та має підтримувати кілька мов.

Створити сторінку для керування налаштуваннями

Використовуйте API налаштувань (Settings API) WordPress для створення безпечних та стандартизованих сторінок керування. Це рекомендований підхід, адже він допомагає забезпечити безпеку (перевірка значень типу nonce) та уніфікованість інтерфейсу форм.

Ось спрощений приклад додавання верхнього меню та сторінки налаштувань:

class My_Plugin_Admin {
    public function __construct() {
        add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
        add_action( 'admin_init', array( $this, 'settings_init' ) );
    }

public function add_admin_menu() {
        add_menu_page(
            '我的插件设置', // 页面标题
            '我的插件',     // 菜单标题
            'manage_options', // 权限
            'my-plugin',      // 菜单slug
            array( $this, 'options_page_html' ) // 回调函数,输出页面内容
        );
    }

public function settings_init() {
        register_setting( 'my_plugin_settings', 'my_plugin_options' ); // 注册设置

// 添加设置区域和字段
        add_settings_section( 'my_plugin_section', '主要设置', null, 'my-plugin' );
        add_settings_field( 'api_key', 'API密钥', array( $this, 'api_key_field_html' ), 'my-plugin', 'my_plugin_section' );
    }

public function api_key_field_html() {
        $options = get_option( 'my_plugin_options' );
        ?&gt;
        <input type='text' name='my_plugin_options[api_key]' value='<?php echo esc_attr( $options['api_key'] ?? '' ); ?>'>
        <?php
    }

public function options_page_html() {
        // 检查用户权限
        if ( ! current_user_can( 'manage_options' ) ) return;
        ?>
        <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_plugin_settings' );
                do_settings_sections( 'my-plugin' );
                submit_button();
                ?>
            <input type="hidden" name="trp-form-language" value="uk"/></form>
        </div>
        &lt;?php
    }
}
new My_Plugin_Admin();

Інтернаціоналізація плагінів

Щоб плагін був доступний для користувачів по всьому світу, необхідно підтримувати кілька мов. Це досягається шляхом використання механізмів, які дозволяють перекладати вміст плагіна на потрібні мови.__( ‘Text’, ’text-domain’ )_e( ‘Text’, ’text-domain’ )Функція перекладу обгортає весь текст, який є видимим для користувача, щоб забезпечити його переклад. Ви вже визначили цю функцію у коментарях на початку плагіна.Text Domain: my-first-pluginСаме для цього все було підготовлено.

1. У коді для всіх рядків, які потребують перекладу, використовуйте функцію перекладу.

    echo __( ‘欢迎使用我的插件!’, ‘my-first-plugin’ );
    $title = esc_html__( ‘设置页面’, ‘my-first-plugin’ );

2. Використовуйте інструменти на кшталт Poedit для сканування рядків перекладу у коді плагінів та створення необхідних файлів для зберігання перекладів..potФайли-шаблони. На їх основі розробники створюють версії продукту для кожної мови..poІ після компіляції.moФайли (наприклад…)zh_CN.po/mo)。
3. Розмістіть ці мовні файли у папці плагіна.languagesУ папці знаходяться всі необхідні файли для перекладу. WordPress автоматично завантажує відповідні переклади відповідно до налаштувань мови сайту.

підсумок

Розробка плагінів для WordPress – це процес, який починається зі створення простих скриптів та переходить до розробки складних додатків. Ключовим елементом є розуміння та вміле використання системи хуків (hooks), що дозволяє безперешкодно інтегрувати ваші функції у життєвий цикл WordPress за допомогою дій (actions) та фільтрів (filters). Дотримання принципів об’єктно-орієнтованого програмування покращує організацію коду та його зручність у обслуговуванні. Безпека є основою розробки; необхідно перевіряти, очищати та екранувати будь-які дані, надіслані користувачами. Нарешті, за допомогою API налаштувань (Settings API) можна створити професійний інтерфейс для керування плагіном, а функції інтернаціоналізації допоможуть розповсюдити ваш плагін по всьому світу. Почніmy-first-plugin.phpПочніть поступово застосовувати ці концепції у своїй роботі, і ви зможете створити потужний, безпечний та популярний плагін для WordPress.

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

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

Вам необхідно опанувати мову програмування PHP, адже більшість плагінів написані саме на цій мові. Крім того, вам потрібно мати базові знання HTML, CSS та JavaScript для створення фронтенд-інтерфейсів та забезпечення їх взаємодії з користувачем. Найважливіше – зрозуміти основи функціонування системи WordPress, такі як теми, хаки (hooks), цикли та способи зберігання даних.

Чи можу я протестувати плагін на своєму комп’ютері, не впливаючи на онлайн-веб-сайт?

Звісно, що можливо, і це дуже рекомендується. Вам варто розробляти плагіни у локальному середовищі розробки (наприклад, використовуючи інструменти XAMPP, MAMP, Local by Flywheel тощо) або на окремому тестовому сервері. Це допоможе уникнути проблем, пов’язаних з помилками в коді, які можуть призвести до збоїв в роботі веб-сайту або втрати даних.

Як налаштувати (діагностувати та виправити) код мого плагіна?

WordPress надає кілька інструментів для налагодження роботи сайту. По-перше,wp-config.phpУвімкнення режиму налагодження у файлі: визначенняWP_DEBUG常量为trueЦе буде відображати PHP-помилки, попередження та сповіщення безпосередньо на сторінці. Для більш складного налагодження програми можна використовувати додаткові інструменти та методи.error_log()Функція записує інформацію до серверного журналу помилок або використовує спеціалізовані засоби для налагодження, такі як Query Monitor, які надають детальну інформацію про запити до бази даних, хаки, помилки PHP тощо.

Після завершення розробки, як надіслати плагін до офіційного каталогу WordPress?

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