Кращі практики
Кожен проект має свої особливості та стандарти, WordPress не є винятком. Нижче поговоримо про важливі деталі, на які слід звертати увагу при написанні коду плагіна для WordPress. Рекомендації нижче допоможуть організувати ваш код, щоб він добре працював разом з іншими плагінами та ядром WordPress.
Читайте також: найкращі практики написання PHP коду в WordPress .
Додайте префікси
Усі файли поза каталогом плагіну, змінні та функції плагіна повинні бути унікальними і не повинні конфліктувати з назвами інших плагінів. Щоб зробити назви унікальними і залишити їх впізнаваними, рекомендується додавати префікс. Префікси запобігають перезапису значень змінних іншими плагінами або випадкових викликів ваших функцій. Це також захистить від впливу роботи вашого плагіну на роботу інших плагінів. Додавання ініціалів імені вашого плагіна або вашого імені – теж непоганий варіант.
Декілька прикладів використання префіксів у коді:
if( ! function_exists('myplugin_init' ) ){ function myplugin_init(){ register_setting( 'myplugin_setting_example', 'foo'); register_setting( 'myplugin_setting_demo', 'bar'); } } if( ! function_exists( 'myplugin_get_demo_setting' ) ){ function myplugin_get_demo_setting(){ return get_option( 'myplugin_setting'); } } /* File path: settings/myplugin_example.php */
Організуйте файли
Кореневий рівень папки з плагіном повинен містити файл plugin-name.php
і, опціонально, файл для деінсталяції . Всі інші файли, по можливості, повинні бути зібрані в папки.
Правилом хорошого тону і необов’язковим стандартом вважається назвати головний файл плагіна також як називається папка плагіна: наприклад:plugin-name/plugin-name.php
Також корисно відокремлювати код адміністратора та використовувати умову is_admin() , щоб не завантажувати його, коли не потрібно. Наприклад, у головному файлі плагіна можливе таке:
if(is_admin) { // ми в адмін-панелі require_once dirname(__file__) . '/admin/myplugin_admin.php'; }
Структуруйте папки
Чітка структура папок допоможе вам та іншим розробникам краще працювати з плагіном. Тому тримайте такі файли разом. Наприклад, розмістіть файли JavaScript у папці /js
, файли стилів у /css
, та зображення у папці /images
.
Приклад структури папок для довідки:
/my-plugin-name /admin /js /css /images /includes /settings my-plugin-name.php uninstall.php
Визначтеся з архітектурою
Архітектура, або організація коду, яку ви вибираєте для вашого плагіна, швидше за все, буде залежати від розміру плагіна. Для невеликих вузькоспеціалізованих плагінів, які мають лише невелику взаємодію з ядром WordPress, темами або іншими плагінами, рекомендується використовувати простий код без класів та іншого ООП. Виняток тут випадки коли ви знаєте що пізніше плагін буде значно розширюватись.
Великі плагіни з великою кількістю групового коду починаються з наміченою кінцевою метою у вигляді класів, окремого стилю та файлів скрипту, і навіть взаємопов’язані файли можуть допомогти в організації коду та довгострокової підтримки плагіна.
Приклади архітектур
Можливих моделей архітектури багато, але ми все ж таки розділимо їх на три варіації:
Єдиний файл плагіна, що містить клас, екземпляр об’єкта та опціональні функції – приклад
Головний файл плагіна та один чи більше файлів класів. За приклад можна взяти шаблон плагіна WordPress Plugin Boilerplate – це стандартна об’єктно-орієнтована основа. Цей шаблон також має генератор: WordPress Plugin Boilerplate Generator
- Єдиний файл плагіна, що містить функції – приклад Hello Dolly
Докладніше про архітектуру (статті на англ.)
Конкретні реалізації більш складних вищезгаданих прикладів організації коду вже написані як навчальні посібники та слайди:
SLASH Architecture – My approach to building WordPress plugins , стара назва Slash – Singletons, Loaders, Actions, Screens, Handlers
- Implementing the MVC Pattern в WordPress Plugins
Готові шаблони (макети) для створення плагіна
Замість того, щоб кожен новий плагін починати з нуля, його можна почати з шаблону (макета). Перевага макета – це узгодженість ваших власних плагінів, а також для макетів, що широко використовуються, – формат, який інші учасники розробки теж розуміють.
Вони також служать як додаткові приклади різних, але порівнянних архітектур:
WordPress Plugin Boilerplate : основа для розвитку WordPress плагіна, яка покликана забезпечити чітку та послідовну інструкцію для будівництва.
WordPress Plugin Bootstrap : основа, щоб побудувати плагін WordPress використовуючи Grunt, Compass, GIT, та SVN.
WP Skeleton Plugin : Скелет плагіна, що фокусується на юніт-тестах та використанні composer для розробки.
- General search for WordPress plugin boilerplates on GitHub : пошук на гітхабі шаблонів для плагінів.