Від автора: Концепція класифікацій та термінів у WordPress нероздільна. Трохи нижче я більш детально розповім про це. На мою думку, щоб працювати з термінами, необхідно розуміти, що представляють собою таксономії і терміни, і як вони взаємодіють. Інакше як ми будемо впевнені, що все робимо правильно на програмному рівні?
У цій серії з двох статей ми з вами дізнаємося, що таке таксономії, їх роль в WordPress, а також, що їх пов’язує з термінами. І трохи пізніше ми звернемо увагу на поняття термінів, а також навчимося працювати з term metadata API.
Рекомендую ознайомитися з попередніми моїми статтями, якщо ви ще цього не зробили. В них я пояснюю принцип роботи API, з яким ми будемо працювати. Якщо ж ви не хочете витрачати свій час на це, в принципі, нічого страшного. У цій серії ми докладно розберемо все, що вам потрібно.
Що таке таксономії?
Визначення з кодексу: «WordPress «таксономії» — це механізм угруповання декількох постів (або посилань постів типу).»
Це слово ми чуємо нечасто. Іноді люди навіть губляться, коли починають говорити про таксономиях і термінах. Іншими словами, люди використовують приклад фрази в якості таксономії, але насправді це всього лише термін. Трохи нижче я поясню цю пропозицію.
Говорячи простою мовою, таксономії – це способи групування речей. В WordPress після установки є дві таксономії: категорії і теги. Нижче ми розберемо кожну таксономію більш докладно.
Є один нюанс, принаймні, у WordPress: таксономії можуть бути ієрархічними й неиерархическими. Самий зрозумілий приклад вищесказаного:
При створенні нової категорії в WordPress, ви можете створити категорії верхнього рівня, підкатегорію, так і вже існуючу категорію. Приміром, орли – підкатегорія птахів.
Створюючи тег в WordPress, ви прописуєте одне слово або фразу, яка буде асоціюватися з постом. Дочірніх і батьківських тегів не буває.
В цьому і полягає різниця ієрархічної та неиерархической таксономії. Начебто легко, правда? Якщо підтримуються дочірні елементи, як в категоріях, це ієрархічна класифікація. Якщо ж дочірні елементи не підтримуються, як в тегах, це неієрархічна таксономія.
У цій серії статей вміння розрізняти таксономії не грає великої ролі, хіба що це допоможе краще зрозуміти цю мову в процесі розробки.
Але коли ми почнемо створювати програмно таксономії і прикріплювати до них терміни, у нас не повинно виникнути сумніви в тому, що ми робимо.
Що таке терміни?
З класифікаціями ми розібралися, а що таке терміни? З кодексу: «Терміни в WordPress – це класифікація, група або підмножина таксономії, де останнє може бути категорією, тегом або таксономією. За промовчанням термінів є заголовок, короткий заголовок URL адреси і опис. Ієрархічні таксономії, такі як категорії, можуть створювати батьківські терміни».
Саме те визначення, якого слід було очікувати, враховуючи все, що ми вже вивчили. Тобто терміни асоціюються з класифікаціями. Однак у термінів є кілька важливих аспектів, які необхідно знати, якщо ми будемо створювати їх або працювати з ними програмно. Терміни складаються з:
Короткого заголовка URL адреси
Заголовок
Опис
І не забувайте, що якщо ми працює з ієрархічною таксономією, такий як категорії, терміни можуть включати в себе батьківські терміни.
Це не означає, що в таксономиях немає інформації, що відноситься до термінів. Приміром, у таксономії є назва, тип поста, з яким вона асоціюється, а також ряд аргументів, які виходять за рамки цієї статті. У наступній статті ми детально їх розглянемо.
Як пов’язані терміни і таксономії?
Між термінами та класифікаціями щось на зразок симбіотичної зв’язку, тобто одна не може існувати без іншого. В ієрархічних таксономиях це простежується наочніше. У кодексі WordPress є діаграма, що описує зв’язок класифікацій і термінів:
Наприклад, можна мати таксономію Категорії, але в ній повинен бути хоча б один термін. Саме тому в WordPress за замовчуванням є терміни без категорій (Uncategorized).
Але також можна створити таксономію Теги і не зберігати жодного тега в базі даних. Чи можемо ми, як розробники, як розширити дану систему? Як терміни, так і таксономії можуть бути створені програмно, однак користувачі також можуть створювати і додавати їх. Принаймні, якщо в інтерфейсі є така можливість.
Конкретний приклад: За допомогою інтерфейсу WordPress всі ми можемо створювати категорії і теги. Але якщо ви програміст і хочете перемістити окремі таксономії і терміни в базу даних, ви можете зробити так, щоб користувачі не змогли більше додавати і видаляти їх через інтерфейс.
Що таке Term Metadata?
Ми вже зрозуміли, що таке таксономії і терміни, а також різницю між ними, і залишилося одне питання: Навіщо потрібні term metadata? Або по-іншому в чому сенс term metadata?
Хороше питання. Можливо, саме тому даної функції не було до WordPress 4.4. Що ще цікавіше, так це те, що про цю функцію оголосили більше 6 років тому. Головна причина, по якій ще 6 років тому заговорили про метаданих термінів була:
«На даний момент немає конкретного способу зберігання додаткових даних в таксономиях. Розробникам плагінів доводиться створювати методи для зберігання таких даних. Наприклад, можна зберігати дані в зашифрованому вигляді в поле опису або використовувати метод set_option(). Нова функція не завадила б, приміром, add_taxonomy_data() / get_taxonomy_data().»
Дане поняття буде мати для вас сенс, якщо ви просунутий розробник. Але не всі з нас досягли такого рівня знань, і ми не можемо точно сказати, чим метадані термінів краще.
Як і в інших API, ми можемо зберігати дані про будь-якому терміні із бази даних. До метаданих термінів можна віднести що-небудь, пов’язане з часом створення терміна, автором, кількістю постів, з якими асоціюється даний термін. Також з їх допомогою термінів можна додавати зображення.
Так як інформація в метаданих термінів може бути самою різною, нам відкриваються найширші можливості. У наступній статті ми розглянемо конкретні приклади.
Висновок
На даний момент ви знаєте все, що вам знадобиться для роботи з термінами та класифікаціями. Коли ви будете писати плагін, тему або що-небудь ще для клієнта, вам, швидше за все, доведеться кілька разів відкрити кодекс. Навіть для досвідченого розробника це нормальна практика.
У наступній статті ми навчимося працювати з метаданими термінів: розберемо конкретний приклад коду, додамо цей код на одну з тем за замовчуванням, будемо вносити зміни та стежити за базою даних.