Як створити плагін

В основі будь-якого плагіна лежить PHP код, логіка його роботи та правильне використання API WordPress. Завданням будь-якого плагіна має бути створення нового функціоналу з мінімально можливим навантаженням, сумісність з ядром WordPress і грамотна робота коду в умовах системи, що постійно-оновлюється.




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

Щоб створити плагін WordPress потрібно:

  1. Створити папку плагіна . У ній лежатимуть файли нашого плагіна. Створюється вона у папці всіх плагінів WordPress. Наприклад, створюємо папку /wp-content/plugins/my-plugin-name.
  2. Створити основний файл плагіна. Рекомендується, щоб назва цього файлу співпадала з назвою папки плагіна. Наприклад, my-plugin-name.php/wp-content/plugins/my-plugin-name/my-plugin-name.php.
  3. Створити опис плагіназаголовки плагіна . Вони потрібні щоб wordpress розпізнав плагін як плагін, інакше він просто не працюватиме. На початок головного файлу плагіна, потрібно додати php коментар, де вказати ім’я плагіна:
    <?php
    
    /*
     * Plugin Name: Мій перший плагін
     */

Готово! Тепер наш плагін можна побачити у розділі Плагіни в адмін-панелі.

Якщо плагін є лише одним файлом як Hello Dolly , то його можна помістити прямо в папку плагінів – /plugins/hello.phpі все буде працювати. Однак, рекомендується дотримуватися стандарту: файли плагіна повинні знаходитися у власній папці, а головний файл плагіна повинен мати назву папки плагіна.




Додаткові дані у заголовку

Щоб плагін почав працювати, достатньо вказати тільки Plugin Name(назва плагіна). Але також можна вказати інші параметри плагіна – це покращить відображення плагіна в консолі WordPress.

<?php

/**
 * Plugin Name: Назва плагіна
 * Description: Опис плагіна бажано не дуже довге (140 символів)
 * Plugin URI: Посилання на сторінку плагіна
 * Author URI: Посилання на автора
 * Автор: Ім'я автора
 * Version: Версія плагіна, наприклад 1.0
 *
 * Text Domain: ID перекладу, вказується в load_plugin_textdomain()
 * Domain Path: Шлях до файлу перекладу.
 * Requires at least: 2.5
 * Requires PHP: 5.4
 *
 * License: GPL2
 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
 *
 * Network: Вкажіть "true" для можливості активувати плагін для мережі Multisite.
 * Update URI: https://example.com/link_to_update
 */

// код плагіна
Plugin Name:
(обов’язковий)
Назва плагіну, що відображається у списку плагінів в адмінці.
Description:
Короткий опис плагіна, який відображається в розділі Плагіни в адмінці. Рекомендовано не перевищувати 140 символів.
Version:
Номер поточної версії плагіна, наприклад 1.0 або 1.0.3.

Під час встановлення версії майте на увазі, що WP для порівняння версій використовує функцію version_compare() . Тому при зміні версії переконайтеся, що нова версія буде вищою. Наприклад, 1.02 більше ніж 1.1

Plugin URI:
Домашня сторінка плагіна, яка може бути на WordPress.org або вашому власному сайті.
Автор:
Ім’я автора плагіна. У списку може бути більше одного автора.
Автор URI:
Сайт автора або профіль на іншому веб-сайті, наприклад WordPress.org.
Requires at least:
Найнижча версія WordPress, на якій працюватиме плагін. Наприклад:
2.5 .
Requires PHP:
Мінімальна необхідна версія PHP. Наприклад:
5.4 .
License:
Коротке ім’я ліцензії плагіна, наприклад, GPL2. Докладнішу інформацію про ліцензування можна знайти на
WordPress.org .
License URI:
Посилання на ліцензію, наприклад,
https://www.gnu.org/licenses/gpl-2.0.html .
Text Domain:
Ідентифікатор перекладу (домен локалізації) використовується у функціях локалізації та в назві файлу перекладу mo. Докладніше дивіться
цитату тут .
Domain Path:
Потрібний, якщо файл перекладу знаходиться не в тій же папці, що містить поточний файл. Наприклад, .mo файл перебуває у папці
/myplugin/languages, а файл плагіна в
/myplugin/myplugin.php, тоді вказуємо
/languages.
Network:
Вкажіть “true” щоб плагін обов’язково активувався по всій мережі сайтів у
MU збиранні WordPress . Це унеможливить активувати плагін для одного сайту, якщо активована мультимережа.
Update URI:
URL для поновлення сайту. Використовується у функції
wp_update_plugins() . З домену буде створено хук
update_plugins_(hostname) .




Шаблон для створення плагіна WordPress

Щоб не створювати файли та структуру з нуля, можна використовувати шаблон для створення плагіна:

Шаблон є стандартною і організованою об’єктно-орієнтованою основою.

Шаблон дотримуються стандартів PHP коду для WordPress .

Використовуючи такий підхід, можна бути впевненим у більш чіткій та зрозумілій структурі плагіна. Так можна згенерувати основу і потім просто видалити всі непотрібні файли, залишивши структуру тек – структура важлива!




Хуки у плагіні

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

Існує два типи хуків у WordPress:

Хуки потрібні не тільки для розробників плагінів, але і тим, хто буде використовувати ваш плагін. Хуки використовуються скрізь: у самому ядрі WordPress, у плагінах та темах. Саме хуки роблять WordPress таким гнучким.

Безпосередньо до плагінів належать три функції:

  • register_activation_hook() – реєструє функцію, яка спрацьовуватиме під час активації плагіна.
    Використовується для додавання налаштувань плагіна тощо.
  • register_deactivation_hook() – реєструє функцію, яка має запускатися після деактивації плагіна.
    Використовується для видалення тимчасових даних плагіна.
  • register_uninstall_hook() – реєструє функцію, що викликається при видаленні плагіна.
    Використовується при видаленні плагін для видалення всіх даних плагіна: у налаштуваннях, файлах, базі даних і т.д.

Крім цих трьох функцій до API плагінів відносяться всі функції хуків та деякі функції плагінів .

Можна створювати власні хуки у вихідному коді плагіна за допомогою apply_filters() . Вони дозволять користувачам вашого плагіна розширити його можливості, так само, як WordPress дозволяє вам розширювати свої можливості.

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




PHP Функції та WordPress API

WordPress надає низку API. API може значно спростити написання коду. Тобто. не потрібно винаходити колесо, коли воно вже є.

Деякі API WordPress:

  • API налаштувань – спрощує створення та керування опціями плагіна, які зберігаються в базі даних.
  • plugin_dir_url() — Отримує URL папки (директорії, каталогу), де знаходиться вказаний файл плагіна (зі слешем на кінці).
  • register_activation_hook() — Реєструє функцію, яка спрацьовуватиме під час активації плагіна.
  • register_deactivation_hook() — Реєструє функцію, яка запускатиметься після деактивації плагіна.
  • register_uninstall_hook() — Реєструє функцію, яка викликається при видаленні плагіна, щоб почистити всі сліди перебування плагіна в системі.
  • HTTP API – спрощує створення HTTP запитів у PHP. Відмінна заміна велосипедів на CURL.




Як WordPress завантажує плагіни

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

$active_plugins = get_option( 'active_plugins');

/* Отримаємо $active_plugins
Array
(
	[0] => hello-dolly/hello-dolly.php
	[1] => backupwordpress/backupwordpress.php
	[2] => democracy-poll/democracy.php
	[3] => disable-emojis/disable-emojis.php
)
*/

З усього цього слід: просто своєю присутністю плагіни не впливають на швидкість роботи сайту (за винятком підключення файлу плагіна, а це супер швидка операція). Неактивні плагіни взагалі не впливають ніяк. Докладніше читайте тут .




Репозиторій плагінів WordPress

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

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

Якщо плануєте відправляти плагін на WordPress.org, потрібно дотримуватись вимог до заголовка плагіна WordPress .

Ліцензія повідомляє користувачам, як вони можуть використовувати код плагіна у своїх цілях. Для підтримки сумісності з ядром WordPress рекомендується вибрати ліцензію, яка працює з GNU General Public License (GPLv2+) .

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *