У перших двох частинах цієї серії статей я розповіла про бази даних WordPress і її структурі і показала, як керувати залежностями між різними типами вмісту.
У цій статті я більш детально розгляну типи контенту і опишу різні типи контенту в WordPress і те, як вони взаємодіють.
Говорячи про вміст у WordPress, ми зазвичай маємо на увазі запису і сторінки. Але не все так просто. В WordPress використовується цілий ряд типів контенту, і запису і сторінки — це лише два приклади з них.
Розуміння типів контенту і того, як вони зберігаються і як взаємодіють один з одним допоможе вам досягти більш високого рівня в знанні WordPress і писати складні запити для ваших тем і плагінів.
Давайте приступимо!
Основні типи контенту в WordPress
Існує чотири типи контенту в WordPress:
- записи;
- коментарі;
- користувачі;
- посилання.
Багато з них ведуть себе схоже, як ми побачимо далі.
Записи
Записи є найважливішим типом контенту в WordPress. Можна трохи заплутатися в термінології, так як термін «запис» характеризує вміст таблиці wp_posts, а також служить для опису певного типу запису. Додавання наступного рядка в запит може здатися зайвим, але воно має сенс!
‘post_type’ => ‘post’
Існує 5 типів записів за замовчуванням, вбудованих у WordPress:
- запис (post);
- сторінка (page);
- вкладення (attachment);
- редакція (revision);
- елемент меню навігації (navigation menu item).
Як я пояснювала в попередньому уроці цієї серії, присвяченому зв’язків між даними, записи можуть бути пов’язані один з одним.
Це, як правило, використовується для визначення того до якої запису або сторінці прикріплено вкладення, і яка сторінка батьківського є для іншої сторінки.
Перші три типи контенту знайомі розробників WordPress як записи, але те, що два останніх є записами — менш очевидно. Кожна редакція зберігається в таблиці wp_posts разом із записом, з якою вона пов’язана як батько (за допомогою поля post_parent).
Елементи меню навігації зберігаються теж як записи, а потім виводяться з допомогою запиту при відображенні меню. Ось чому меню навігації може раптово зникнути, якщо ви некоректно використовуєте фільтр pre_get_posts()!
Ви можете додати стільки додаткових типів контенту, скільки потрібно для вашого сайту, створюючи користувальницькі типи записів.
Це просто додаткові типи записів, які ведуть себе подібно записам, сторінок або вкладень, у залежності від того, як ви їх налаштували при реєстрації типу запису.
Діаграма, наведена нижче, демонструє таблицю wp_posts і таблиці, пов’язані з нею:
Коментарі
Коментарі зберігаються в окремій таблиці бази даних — wp_comments. Принцип роботи схожий з записами в тому, що кожен коментар може мати прикріплені через таблицю wp_commentmeta метадані, але мати різний контент і тому, для їх таблиці потрібні різні поля.
Коментарі пов’язані з записами відношенням «один-до-багатьох». Також вони пов’язані один з одним за допомогою поля comment_parent — це зроблено для визначення коментарів, що є відповіддю на інші коментарі. Ще коментарі можуть бути пов’язані з таблицею wp_users, якщо вони створені зареєстрованими користувачами.
На діаграмі показана таблиця wp_comments та її зв’язку:
Користувачі
Для користувачів є своя власна таблиця, wp_users, а також метадані, які зберігаються в таблиці wp_usermeta. З першого погляду може здатися, що користувачі як тип контенту сильно відрізняються від записів, але у них є більше спільного, ніж ви думаєте — користувачів можна запросити і вивести в архів автора.
Крім того, вони містять контент у вигляді біографічних даних про користувачів. Цей контент має відмінну від записів, посилань і коментарів структуру, ось чому для користувачів потрібна окрема таблиця.
Діаграма демонструє таблицю wp_users та її зв’язку:
Ви дізнаєтеся більше про користувальницьких даних і про те, як вони пов’язані з іншими таблицями бази даних в наступних частинах цього циклу статей.
Посилання
І останній тип контенту — це посилання. Все було так, але тепер блогрол більше не доступний за замовчуванням, починаючи з версії WordPress 3.5.
Посилання працюють подібно записам: у них є зміст і їм можна присвоїти елементи таксономії.
Однак посилання відрізняються від записів тим, що у них є зовсім інші поля для зберігання даних: цільовий посилання, її опису і так далі.
Посилання не пов’язані з користувачами, тому їм не можна призначити автора. Також вони не мають поля для визначення батьків, тобто не можуть бути прикріплені до запису — але ви можете використовувати таксономії, щоб включити посилання на архівні сторінки.
Таблиця wp_links і її відносини з іншими таблицями показано нижче:
Зауваження з приводу метаданих
Серед чотирьох типів контенту, описаних вище, можуть містити три прикріплені метадані:
- записи;
- коментарі;
- користувачі.
Я розгляну метадані більш детально в наступних статтях і покажу вам, як вони зберігаються.
Узагальнення
Як ми з’ясували, в WordPress використовуються різноманітні типи вмісту для зберігання даних і зв’язків між ними. Типи контенту, які зберігаються в базі даних, не обмежені тільки записами і сторінками, але також включають в себе користувальницькі типи записів плюс інші типи контенту, такі як вкладення, редакції і елементи меню навігації.
Розуміння того, що являє собою кожен тип контенту і як він працює, також як подібностей і відмінностей між ними, допоможе вам розробляти більш ефективні теми і плагіни WordPress.
Переклад статті «Understanding and Working with Content Types in WordPress» був підготовлений дружною командою проекту Сайтостроение від А до Я.