Оволодіння розробкою плагінів для WordPress: створення вашого першого власного плагіна з нуля

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

Чому варто обирати розробку плагінів для WordPress?

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

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

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

Перш ніж почати писати код, вам потрібно налаштувати стандартне середовище WordPress на локальному комп’ютері або на тестовому сервері. Це є основою для всіх робіт з розробки.

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

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

Кожен плагін для WordPress має мати головний файл, який зазвичай називається так само, як і плагін. Ми створимо файл під назвою…my-first-pluginПлагін. Спочатку, у вашому каталозі встановлення WordPress:/wp-content/plugins/У цьому папці створіть новий папірець під назвоюmy-first-plugin

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

У цьому папці створіть файл під назвоюmy-first-plugin.phpЦе PHP-файл, який є входною точкою для вашого плагіна. Відкрийте його та додайте наступні коментарі на початку коду – ця інформація є критично важливою для того, щоб WordPress ідентифікував ваш плагін.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个学习WordPress插件开发的示例插件,用于在文章底部添加自定义内容。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Реалізація першої простої функції

Однією з класичних функцій для початківців є автоматичне додавання текстового блоку внизу всього контенту статей на веб-сайті. Ми будемо використовувати цю можливість у WordPress. the_content Це можна зробити за допомогою фільтрів та хуків (hooks). Додайте наступну функцію під коментарями у верхній частині вашого основного файлу:

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

/**
 * 在文章内容末尾添加自定义文本
 *
 * @param string $content 原始的文章内容。
 * @return string 修改后的文章内容。
 */
function mfp_add_footer_text( $content ) {
    // 判断是否是主循环且在单篇文章页面
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<div class="mfp-footer-note"><p><em>Дякуємо, що прочитали! Цю статтю підготував для вас проект “Мій перший плагін”.</em></p></div>';
        return $content . $custom_text;
    }
    return $content;
}
// 将函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' );

Цей фрагмент коду визначає функцію. mfp_add_footer_textВоно отримує вміст статті. $content Як параметр. Усередині функції спочатку перевіряється, чи знаходимося ми на сторінці окремої статті, у головному циклі чи під час виконання головного запиту. Це робиться для того, щоб уникнути додавання тексту в анотації, підказки чи в інших місцях. Якщо умови виконані, функція створює власний фрагмент HTML-коду та додає його після початкового контенту.

Детальний аналіз архітектури та безпеки плагінів

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

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

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

Для покращення зберігання та розширення коду рекомендується використовувати об’єктно-орієнтований (OOP) підхід до організації плагінів. Ми переосмислимо вищезгадані функції, перетворивши їх на класи.

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

class My_First_Plugin {
    /**
     * 构造函数,初始化插件钩子。
     */
    public function __construct() {
        // 在构造方法中将方法挂载到钩子上
        add_action( 'init', array( $this, 'load_textdomain' ) );
        add_filter( 'the_content', array( $this, 'add_footer_to_content' ) );
        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
    }

/**
     * 加载插件的文本翻译域。
     */
    public function load_textdomain() {
        load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
    }

/**
     * 在文章内容末尾添加自定义文本。
     */
    public function add_footer_to_content( $content ) {
        if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
            $custom_text = '<div class="mfp-footer-note"><p><em>' . esc_html__( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ) . '</em></p></div>';
            return $content . $custom_text;
        }
        return $content;
    }

/**
     * 为插件添加样式。
     */
    public function enqueue_styles() {
        wp_enqueue_style( 'mfp-style', plugins_url( 'assets/css/style.css', __FILE__ ), array(), '1.0.0' );
    }
}

// 实例化插件类
$my_first_plugin_instance = new My_First_Plugin();

Зверніть увагу, що ми… add_footer_to_content У методі були використані певні елементи або техніки. esc_html__() Функція призначена для обгортання тексту. Це функція перекладу, яка також виконує належне ескапування символів у вихідному тексті – це найкраща практика для безпечного відображення тексту. Ми також додали метод для завантаження таблиць стилів та підтримку текстових полів, що підготовлює систему до інтернаціоналізації (i18n).

Зрозуміти та реалізувати перевірку та ескапацію даних.

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

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

Функції цього плагіна досить прості, але під час генерації HTML-коду ми вже використовували його можливості. esc_html__() Необхідно виконати ескапування даних. Якщо плагін потребує обробляти дані, надані користувачем (наприклад, через форму), то обов’язково слід використовувати відповідні механізми ескапування. sanitize_text_field(), wp_kses_post() Виконайте очищення відповідних функцій та використовуйте нові методи для їх реалізації. wp_verify_nonce() Потрібно перевірити законність запиту.

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

Зрілий плагін зазвичай потребує сторінки налаштувань у бекенді. Ми навчимося використовувати API налаштувань WordPress для створення простої, стандартної сторінки керування.

Додайте меню налаштувань плагінів.

Спочатку нам потрібно додати підменю до меню “Налаштування” у бекенді WordPress. Додайте новий метод у ваш клас та використовуйте його у конструкторі для налаштувань. add_action('admin_menu', ...) Хук викликає його.

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

/**
 * 注册插件管理页面。
 */
public function register_admin_menu() {
    add_options_page(
        __( '我的插件设置', 'my-first-plugin' ), // 页面标题
        __( '我的第一个插件', 'my-first-plugin' ), // 菜单标题
        'manage_options', // 所需权限
        'mfp-settings', // 菜单slug
        array( $this, 'display_settings_page' ) // 显示页面的回调函数
    );
}

Потім додайте наступний код у конструктор:add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );

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

Наступним кроком є необхідність визначення… display_settings_page Метод, призначений для відображення HTML-контенту сторінки налаштувань та реєстрації полів налаштувань за допомогою API налаштувань.

Міжсерверний віртуальний хостинг
Віртуальний хостинг $2.50 USD на місяць, перший місяць $0.1 USD за промокодом tryinterserver, 461 скрипт хмарних додатків, встановлення в один клік.
/**
 * 显示插件设置页面。
 */
public function display_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><p><strong>  <p><strong></h1>
        <form action="/uk/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、非ce等安全字段
            settings_fields( 'mfp_settings_group' );
            do_settings_sections( 'mfp-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="uk"/></form>
    </div>
    <?php
}

/**
 * 初始化插件设置。
 */
public function initialize_settings() {
    // 注册一个设置
    register_setting(
        'mfp_settings_group', // 设置组名
        'mfp_footer_text', // 选项名
        array(
            'type' => 'string',
            'sanitize_callback' =&gt; 'sanitize_text_field', // 清理回调函数
            'default' =&gt; __( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ),
        )
    );

// 添加一个设置区域
    add_settings_section(
        'mfp_main_section',
        __( '主要设置', 'my-first-plugin' ),
        null, // 可选的区域描述回调函数
        'mfp-settings'
    );

// 向区域中添加字段
    add_settings_field(
        'mfp_footer_field',
        __( '页脚文本', 'my-first-plugin' ),
        array( $this, 'render_footer_field' ), // 渲染字段的回调函数
        'mfp-settings',
        'mfp_main_section',
        array( 'label_for' =&gt; 'mfp_footer_text' )
    );
}

Вам потрібно визначити (definire) певні параметри чи концепції. render_footer_field Метод для рендерингу фактичного вводного поля та оновлення попереднього вигляду екрана. add_footer_to_content Метод, який дозволяє отримати дані з бази даних get_option('mfp_footer_text') Читати текст з файлу, а не використовувати жорстко закодовані рядки. Нарешті, додайте це до конструктора:add_action( 'admin_init', array( $this, 'initialize_settings' ) );

підсумок

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

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

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

Щоб розробляти плагіни для WordPress, необхідні такі базові знання:

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

Як налаштовувати та тестувати свій плагін?

По-перше, дуже рекомендуємо розробляти програмне забезпечення у локальному середовищі (наприклад, Local by Flywheel, XAMPP) або на тестовому сайті в режимі онлайн, щоб уникнути впливу на продуктивний сайт. Увімкніть режим налагодження (debugging mode) у WordPress.wp-config.phpНалаштування в файліdefine( 'WP_DEBUG', true );Це буде виводити помилки та попередження PHP на екран. Використовуйте цю функцію для отримання детальної інформації про проблеми під час роботи вашого сайту.error_log()Функція записує власну інформацію про налагодження до журналу помилок сервера. Для більш складного налагодження можна використовувати професійні додатки для налагодження, такі як Query Monitor чи Debug Bar.

Як мій плагін сумісний з різними версіями WordPress?

Під час розробки варто звертати увагу на повідомлення з офіційної документації WordPress щодо забутих (застарілих) функцій. Уникайте використання функцій, які позначені як “застарілі”. У основному файлі плагіна це можна зробити шляхом…Requires at leastTested up toУ верхній частині веб-сторінки необхідно вказати сумісні версії WordPress. Регулярно тестуйте свої плагіни на новіших версіях WordPress та стежте за журналом оновлень ядра системи, щоб своєчасно вносити зміни до коду.

Як опублікувати свій плагін у офіційному каталозі плагінів WordPress?

По-перше, вам потрібно переконатися, що ваш плагін повністю відповідає офіційним стандартам розробки плагінів та інструкціям щодо їх надсилання. Це стосується якості коду, безпеки, ліцензійних умов (ліцензія має бути версією GPLv2 або вищою). Потім зареєструйте SVN-репозиторій на сайті WordPress.org. Надсилайте код вашого плагіна до цього SVN-репозиторію.trunkУ каталозі містяться відповідні записи, і для кожного з них були створені відповідні елементи інтерфейсу.readme.txtФайл (у певному форматі). Після схвалення ваш плагін з’явиться у офіційному каталозі.