Як і у випадку з безліччю інших прикладів в термінології WP, термін post («запис«) може збентежити користувача, тому як він ставиться як до типу публікацій, так і до типу вмісту, що зберігається в таблиці бази даних (БД).

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

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

До них відносяться:

  • записи (posts);
  • користувачі (users);
  • коментарі (comments);
  • посилання (links).

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

Визначення терміна «запис»

По-перше, почнемо з того, що дамо визначення терміну post і визначимо, що це не публікація:

  • post це якесь вміст, збережене в таблиці wp_posts. Кожен запис має тип post_type, який може бути рівним post, page або чогось ще;
  • Публікація являє собою тип запису, який використовується для публікацій блогу або ж новин, в залежності від поставлених вами цілей.

Таблиця wp_posts відображена на картинці нижче:

Зрозуміли різницю? Якщо ні — прочитайте ще раз! Зрозуміти це досить просто.

Типи записів у WordPress

Отже, WordPress має 5 вбудованих типів записів:

  • Post (публікація);
  • Page (сторінка);
  • Attachment (вкладення);
  • Revision (ревізія);
  • Navigation Menu Item (елемент навігаційного меню).

У доповненні до цих типів ви можете створювати користувальницькі типи записів, використовуючи функцію register_post_type(), яка означає, що ваша версія WordPress може мати стільки типів записів, скільки вам заманеться.

Кожен тип запису має такий же статус, як і вбудовані типи — я чув, як деякі схильні думати, що «користувацький тип записів» це «пост сам по собі«. Це не так!

Покажу це на прикладі. При написанні настроюваного запиту для записів, ви повинні додати наступне параметром запиту:

‘post_type’ => ‘post’

Але якщо ви створили користувальницький тип запису my_post_type, вам слід створити запит типу:

‘post_type’ => ‘my_post_type’

Ви можете використовувати аргумент post_type для запиту запису будь-якого типу, і в дійсності ви можете запитати запису декількох типів при необхідності.

Не буду вдаватися в подробиці, як це трохи різниться з темою даної статті, але на сторінці WordPress Codex WP_Query все докладно розписано.

Розберемо вбудовані типи записів

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

Тип запису Для чого потрібні Примітка
Публікація Публікація блогу Пост такого типу — лістинг постів на головній
Сторінка Статичні сторінки Призначений для відображення окремих сторінок — як правило, не використовується в архівах (хоча і може).
Сторінки можуть мати предків, які визначаються полем post_parent в запису дочірньої сторінки.
Кожна сторінка може мати безліч дочірніх сторінок, але тільки одну батьківську.
Вкладення Документи і зображення
(які можуть бути прикріплені
до публікації. А можуть і не бути)
Всі медіа-файли в публікації мають свій ID, записаний у полі post_parent .
У картинок, які завантажені через screen Media в адмін-панелі це поле буде порожнім.
Поле guid використовується для зберігання URL-файлу.
Ревізія Зміни в публікації Кожна ревізія прикріплюється до публікації: ID цієї ревізії для публікації
зберігається в полі post_parent.
Елементи
навігаційного
меню
Поодинокі елементи
навігаційного
меню
Кожне меню містить кілька елементів, кожний з яких зберігається в запису.
menu_order — поле, яке використовується для зберігання порядку елементів меню, і додаткова інформація,
така як _target і батьківський елемент меню зберігаються в полях таблиці wp_postmeta.

Користувальницькі типи записів можуть бути зареєстровані, щоб стати на один рівень з вбудованими типами (за винятком типу attachment), але типом за замовчуванням залишиться post. Кожен з типів записів має свій власний інтерфейс.

Взаємозв’язок між типами

Як видно із таблиці, наведеної вище, поле post_parent одне із значущих полів, так як містить інформацію про взаємопов’язаних записах. Це поле включає в себе:

  • батьківські і дочірні сторінки;
  • зміни і записи, до яких відносяться ці зміни;
  • вкладення і записи, для яких вони завантажені.

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

‘post_parent’ => ‘ID’

Ви можете створити подібний запит для вкладень, завантажених в дану публікацію, або ж в якості альтернативи можете запитати вкладення без батьків (тобто ті вкладення, які завантажені безпосередньо з адмін-панелі).
Для цього використовуйте наступний аргумент:

‘post_parent’ => ‘0’

Ви також можете використовувати post_parent_in з масивом ID для ідентифікації дочірніх записів з діапазону записів або сторінок.

У висновку

Розуміння того, що є таблиця wp_posts і що вона зберігає — важлива частина на шляху до розуміння бази даних WP в цілому. Як бачите, таблиця wp_posts використовується для зберігання записів, які складаються з п’яти вбудованих типів записів (включаючи і публікації) і з тих типів, які ви можете створити самостійно.

Таблиця також зберігає дані про взаємопов’язаних записах в поле post_parent.

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