Wordpress розробка плагіна

Wordpress розробка плагіна

Що таке плагіни WordPress?

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

Плюси, мінуси і рекомендації

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

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

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

Хочете швидко навчитися створювати сайти і блоги на WordPress з унікальним дизайном?

Отримайте найповнішу в Рунеті безкоштовну систему навчання створення сайтів на WordPress

Модулі легко створювати, а також можна скористатися хукамі і екшен з WordPress.

Модулі можна створювати за принципом ООП, що робить код більш надійним і керованим.

Обмежений доступ до тем сайту. Плагін не може вставити код безпосередньо в будь-яке місце в темі. У темі повинні бути спеціальні місця, в які можна вставити плагін, такі як місце для основного контенту або під віджети.

Бувають конфлікти плагінів. Іноді інші плагіни (або взагалі тема) можуть негативно впливати на плагін, що може повністю зруйнувати призначений для користувача досвід від сайту (наприклад, ви використовували WordPress медіа завантажувач, який оновився і перестав підтримувати старий функціонал, руйнуючи ваш плагін).

Обмежений доступ до шаблонів і дизайнам. Модулі зобов'язані забезпечувати функціонал, а теми - стилі.

Основні поняття - Екшени, Фільтри, Шорткоди, Віджети і т.д.

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

Екшени (хукі)

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

Все екшени задаються функцією do_action (). Функція приймає такі параметри:

$ Args (необов'язковий, одна або більше змінних)

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

Простий WordPress екшен

Давайте розглянемо хук save_post. Хук приймає чотири значення. Перше - ім'я екшену, інші три є додатковими (в яких зберігаються ID поста, сам об'єкт поста і існування або оновлення поста)

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

Створення власного екшену

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

Спочатку буде відображений page, буде показаний title як зазвичай, і тільки потім буде викликаний наш хук page_subtitle. WordPress перевірить всі прикріплені до екшену функції і виконає їх (буде передана глобальна змінна $ post, щоб функція знала, підзаголовок якої сторінки показувати).

Виконання своїх функцій за викликом екшену

Для виконання певної функції під час роботи екшену необхідно використовувати add_action () для прикріплення функції. add_action приймає такі параметри.

$ Accepted_args (опціональний, але обов'язковий якщо в екшен передається більше однієї змінної)

Використовуємо обов'язкові аргументи

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

Як видно, при появі save_post ми відразу ж прикріплюємо нашу функцію save_my_custom_post, тим самим отримуючи можливість зробити щось після збереження.

Використовуємо всі аргументи (Розуміння пріоритету і значень accepted_args)

Іноді обов'язкових значень недостатньо. У таких випадках для роботи екшену вам необхідно вручну задати значення змінних $ priority і $ accepted_args.

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

Мінлива accepted_args вказує на кількість змінних, переданих при виклику add_action. Кількість аргументів за замовчуванням, прийнятих екшеном, дорівнює одиниці. Якщо ж ваш екшен приймає кілька змінних, ви зобов'язані повідомити WordPress, скільки їх буде. Розглянемо екшен save_post.

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

У загальному і цілому, ви будете використовувати функцію do_action всередині теми або плагіна для запуску коду в різних місцях (задаючи значення, доступні будь-якої функції з хука). Як додати свою функції необхідно використовувати add_action. Свій екшен можна викликати з мінімальним набором параметрів (ім'я екшену і функції, яку ви хочете викликати), або ж ви можете додати пріоритет і кількість переданих змінних.

Фільтри (хукі)

Фільтра WordPress це хук, який приймає змінну (або їх набір) і повертає її назад після певної модифікації. Фільтри часто використовуються для маніпуляції інформацією за умовчанням. У WordPress закладені десятки фільтрів, створених за допомогою функції apply_filters (). Функція приймає такі аргументи:

Хочете швидко навчитися створювати сайти і блоги на WordPress з унікальним дизайном?

Отримайте найповнішу в Рунеті безкоштовну систему навчання створення сайтів на WordPress

Змінна $ tag - назва фільтру. $ Value - змінна або значення, яке необхідно відфільтрувати. Змінна $ var необов'язкова, але з її допомогою можна передати додаткове значення в функцію. Модулі і теми часто створюють фільтри таким чином, що ви можете змінювати елементи без необхідності вносити зміни в код. Фільтри часто задані всередині функцій.

Простий фільтр WordPress

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

До фільтру the_excerpt можна прикріпити свою функцію і маніпулювати витримкою поста перед її поверненням (наприклад, можна обернути текст в контейнер, змінити контент або урізати довжину тексту).

Створення свого фільтра

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

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

Виконання свого фільтра

Для запуску свого фільтра необхідно викликати функцію add_filter (). Функція приймає такі аргументи:

$ Accepted_args (опціональний, але обов'язковий при передачі декількох аргументів)

Функція add_filter працює так само, як і add_action. Здається назву викликається фільтра, назва викликається функції. Подивимося, як можна використовувати цю функцію для фільтрації масиву імен, створеного в попередньому прикладі.

Як можна помітити, ми прикріпили функцію add_new_names до нашого фільтру filter_name_array_values. Функція приймає всього одну змінну $ names. Коли ми поставили наш фільтр вище за допомогою apply_filters, ми встановили значення за замовчуванням Joanna і Peter для масиву.

Наша функція взяла існуючі значення (для простоти ми їх назвали $ names) і додали нове значення Simon в кінець масиву.

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

Функція apply_filters використовується для створення фільтрів всередині тих чи плагінів (в них передаються значення, які необхідно відфільтрувати). Для прикріплення своєї власної функції використовується add_filter, за допомогою чого можна маніпулювати що фільтрується значенням.

Більш докладно про шорткодах можна почитати в shortcode API на сторінці WordPress Codex або в попередній моїй статті кастомними шорткоди WordPress. Текст нижче буде коротким узагальненням, яке допоможе вам почати працювати з шорткодамі.

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

Wordpress розробка плагіна

На front-end стороні буде відображена кнопка:

Швидкий урок по шорткодам

Шорткод створюється за допомогою функції add_shortcode (). Перший передається аргумент ця назва (name) шорткода, другий output_function. Функція output_function приймає три значення; attributes, content і name. Усередині функції створюється сам шорткод і повертається на екран. Параметри функції більш докладно ми розглянемо в нашому прикладі, поки що не звертатимемо на них уваги. Розглянемо простий приклад:

Якщо ви хочете більш докладно вивчити віджети, спочатку ознайомтеся з WordPress Widget API codex. На цій сторінці йдеться про те, що вам необхідно, а також на даній сторінці ви знайдете задокументовані робочі приклади. Віджети вкрай важливий інструмент, так як це ще один спосіб виконання коду плагінів, і в той же час інтерфейс їх використання дуже простий. Приклад шорткода з набором конфігурацій.

Wordpress розробка плагіна

Так як в більшості тим підтримується один або кілька сайдбарі, свій віджет дасть ваш швидкий спосіб відображення вашої інформації в темі. Віджети складніше шорткодов, проте йдуть тим же самим принципам - задаються параметри для відображення, а потім вона відображаються на front-end стороні.

Короткий вступ в віджети

Щоб створити віджет, вам необхідно успадкувати клас WP_Widget. У WordPress був реалізований ООП підхід до створення віджетів, вони існують як клас; даний клас необхідно наслідувати або розширити для додавання свого функціоналу. Розглянемо базовий приклад віджета:

Даний код створить базовий віджет, в якому можна зберегти текстове значення і відобразити його на екрані. Як видно нижче вид не найцікавіший.

Класи (Об'єктно-орієнтоване проектування)

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

Модулі - відмінний кандидат для ООП, так як це модулі, що створюються для виконання певних завдань на вашому веб-сайті. В плагінах зазвичай містяться свої CSS і JS файли поряд з можливими зображеннями і додатковими PHP файлами. ООП полегшить ваш процес розробки. Наш приклад віджета буде повністю об'єктно-орієнтованим.

наступні кроки

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

Редакція: Команда webformyself.

Хочете швидко навчитися створювати сайти і блоги на WordPress з унікальним дизайном?

Отримайте найповнішу в Рунеті безкоштовну систему навчання створення сайтів на WordPress

Найсвіжіші новини IT і веб-розробки на нашому Telegram-каналі

Wordpress розробка плагіна

Хочете швидко навчитися створювати сайти і блоги на WordPress з унікальним дизайном?

Отримайте найповнішу в Рунеті безкоштовну систему навчання створення сайтів на WordPress "Унікальний сайт з нуля"

Схожі статті