Таксономія WordPress: робота з термінами

364

Від автора: Концепція класифікацій та термінів у WordPress нероздільна. Трохи нижче я більш детально розповім про це. На мою думку, щоб працювати з термінами, необхідно розуміти, що представляють собою таксономії і терміни, і як вони взаємодіють. Інакше як ми будемо впевнені, що все робимо правильно на програмному рівні?

У цій серії з двох статей ми з вами дізнаємося, що таке таксономії, їх роль в WordPress, а також, що їх пов’язує з термінами. І трохи пізніше ми звернемо увагу на поняття термінів, а також навчимося працювати з term metadata API.

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

Що таке таксономії?

Визначення з кодексу: «WordPress «таксономії» — це механізм угруповання декількох постів (або посилань постів типу).»

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

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

Таксономія WordPress: робота з термінами

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

При створенні нової категорії в WordPress, ви можете створити категорії верхнього рівня, підкатегорію, так і вже існуючу категорію. Приміром, орли – підкатегорія птахів.

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

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

Таксономія WordPress: робота з термінами

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

Але коли ми почнемо створювати програмно таксономії і прикріплювати до них терміни, у нас не повинно виникнути сумніви в тому, що ми робимо.

Що таке терміни?

З класифікаціями ми розібралися, а що таке терміни? З кодексу: «Терміни в WordPress – це класифікація, група або підмножина таксономії, де останнє може бути категорією, тегом або таксономією. За промовчанням термінів є заголовок, короткий заголовок URL адреси і опис. Ієрархічні таксономії, такі як категорії, можуть створювати батьківські терміни».

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

Короткого заголовка URL адреси

Заголовок

Опис

І не забувайте, що якщо ми працює з ієрархічною таксономією, такий як категорії, терміни можуть включати в себе батьківські терміни.

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

Як пов’язані терміни і таксономії?

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

Таксономія WordPress: робота з термінами

Наприклад, можна мати таксономію Категорії, але в ній повинен бути хоча б один термін. Саме тому в WordPress за замовчуванням є терміни без категорій (Uncategorized).

Таксономія WordPress: робота з термінами

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

Конкретний приклад: За допомогою інтерфейсу WordPress всі ми можемо створювати категорії і теги. Але якщо ви програміст і хочете перемістити окремі таксономії і терміни в базу даних, ви можете зробити так, щоб користувачі не змогли більше додавати і видаляти їх через інтерфейс.

Що таке Term Metadata?

Ми вже зрозуміли, що таке таксономії і терміни, а також різницю між ними, і залишилося одне питання: Навіщо потрібні term metadata? Або по-іншому в чому сенс term metadata?

Хороше питання. Можливо, саме тому даної функції не було до WordPress 4.4. Що ще цікавіше, так це те, що про цю функцію оголосили більше 6 років тому. Головна причина, по якій ще 6 років тому заговорили про метаданих термінів була:

«На даний момент немає конкретного способу зберігання додаткових даних в таксономиях. Розробникам плагінів доводиться створювати методи для зберігання таких даних. Наприклад, можна зберігати дані в зашифрованому вигляді в поле опису або використовувати метод set_option(). Нова функція не завадила б, приміром, add_taxonomy_data() / get_taxonomy_data().»

Дане поняття буде мати для вас сенс, якщо ви просунутий розробник. Але не всі з нас досягли такого рівня знань, і ми не можемо точно сказати, чим метадані термінів краще.

Таксономія WordPress: робота з термінами

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

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

Висновок

На даний момент ви знаєте все, що вам знадобиться для роботи з термінами та класифікаціями. Коли ви будете писати плагін, тему або що-небудь ще для клієнта, вам, швидше за все, доведеться кілька разів відкрити кодекс. Навіть для досвідченого розробника це нормальна практика.

У наступній статті ми навчимося працювати з метаданими термінів: розберемо конкретний приклад коду, додамо цей код на одну з тем за замовчуванням, будемо вносити зміни та стежити за базою даних.