У перших двох частинах цієї серії статей я розповіла про бази даних 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 та її зв’язку:

Загальні відомості та робота з типами вмісту в WordPress

Користувачі

Для користувачів є своя власна таблиця, wp_users, а також метадані, які зберігаються в таблиці wp_usermeta. З першого погляду може здатися, що користувачі як тип контенту сильно відрізняються від записів, але у них є більше спільного, ніж ви думаєте — користувачів можна запросити і вивести в архів автора.

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

Діаграма демонструє таблицю wp_users та її зв’язку:

Загальні відомості та робота з типами вмісту в WordPress

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

Посилання

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

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

Посилання не пов’язані з користувачами, тому їм не можна призначити автора. Також вони не мають поля для визначення батьків, тобто не можуть бути прикріплені до запису — але ви можете використовувати таксономії, щоб включити посилання на архівні сторінки.

Таблиця wp_links і її відносини з іншими таблицями показано нижче:

Загальні відомості та робота з типами вмісту в WordPress

Зауваження з приводу метаданих

Серед чотирьох типів контенту, описаних вище, можуть містити три прикріплені метадані:

  • записи;
  • коментарі;
  • користувачі.

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

Узагальнення

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

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

Переклад статті «Understanding and Working with Content Types in WordPress» був підготовлений дружною командою проекту Сайтостроение від А до Я.