Что такое записи в WordPress и с чем их едят. Работа с записями в WP

Как и в случае с множеством других примеров в терминологии 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 .
У картинок, которые загружены через Media screen в админ-панели это поле будет пустым.
Поле 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»