Как и во многих примерах терминологии WordPress, термин «посты» может сбивать с толку, поскольку он относится к типу поста, а также к типу контента, хранящегося в конкретной таблице базы данных.
Здесь я поясню разницу между этими двумя типами и подробно рассмотрим типы сообщений.
В предыдущей части этой серии я рассмотрел различные типы контента в WordPress, которые хранятся в нескольких разных таблицах базы данных. Эти:
- сообщений
- пользователи
- Комментарии
- связи
В этом уроке я рассмотрю посты более подробно и опишу типы постов, отношения между ними и то, как понимание всего этого может помочь вам работать с ними.
Определение сообщений
Во-первых, я начну с определения постов и того, как они отличаются от постов (да, это сбивает с толку, и добавление заглавной буквы не делает все намного понятнее!):
-
post
— это элемент содержимого, хранящийся в таблицеwp_posts
. Каждому назначенpost_type
, который может бытьpost
,page
или чем-то еще. - Сообщение — это тип сообщения, используемый для сообщений в блоге или новостей, в зависимости от типа сайта, который вы разрабатываете.
Таблица wp_posts
показана на рисунке ниже.
Есть смысл? Если нет, читайте дальше, все станет ясно!
Типы сообщений в WordPress
WordPress поставляется с пятью встроенными типами записей:
- Почта
- страница
- прикрепление
- пересмотр
- Пункт меню навигации
В дополнение к этому вы можете добавить свои собственные типы записей с помощью функции register_post_type()
, что означает, что в вашей установке WordPress может быть столько типов записей, сколько вам нужно. Каждый тип поста имеет тот же статус, что и встроенный тип поста — иногда я слышал, что люди думают, что «пользовательский тип поста» — это сам тип поста. Это не так!
Я проиллюстрирую это на примере. При написании пользовательского запроса для сообщений, вы должны добавить следующее к аргументам вашего запроса:
1
|
‘post_type’ => ‘post’
|
Но если вы создали собственный тип записи с именем my_post_type
, вы бы my_post_type
его с помощью следующего:
1
|
‘post_type’ => ‘my_post_type’
|
Вы можете использовать этот аргумент post_type
для запроса любого типа поста, и вы можете запросить несколько типов постов, если хотите. Я не буду вдаваться в подробности этого, поскольку это выходит за рамки этого учебника, но вы можете прочитать больше на странице Кодекса WordPress для WP_Query
.
Понимание типов сообщений по умолчанию
Давайте кратко рассмотрим каждый из встроенных типов записей, насколько они похожи друг на друга и чем они отличаются. Обратите внимание, что в приведенной ниже таблице я использую термин «пост» в общем смысле для описания содержимого всех типов постов.
Тип сообщения | Используется для | Примечания |
---|---|---|
Почта | Сообщения блога или аналогичные | Основной тип сообщения — указан на главной странице блога |
страница | Статические страницы | Предназначен для отображения по отдельности — обычно не используется в архивах (хотя они могут быть). Страницы могут иметь родителей, которые определяются с post_parent поля post_parent в записи для дочерней страницы. У каждой страницы может быть несколько дочерних, но только один родитель. |
прикрепление | Документы и изображения (которые могут или не могут быть прикреплены к сообщению) | Медиа, загруженные в сообщение, будут иметь идентификатор этого сообщения в своем поле post_parent . Изображения, загруженные с помощью экрана «Медиа» на приборной панели, будут иметь это поле пустым. Поле guid используется для хранения URL медиа-файла. |
пересмотр | Индивидуальные ревизии к каждому посту | Каждая ревизия прикрепляется к сообщению: ID этого сообщения будет храниться в поле post_parent ревизии. |
Элементы меню навигации | Индивидуальные пункты меню навигации | Каждое меню будет содержать несколько элементов навигации, каждый из которых хранится в виде сообщения. Поле menu_order используется для хранения информации о порядке пунктов меню навигации, а дополнительные данные, такие как целевой и родительский пункты меню, хранятся в виде записей в таблице wp_postmeta . |
Пользовательские типы записей могут быть зарегистрированы так, чтобы они вели себя так же, как и любой из встроенных типов записей (кроме attachment
), но по умолчанию используется post
. Каждый из типов сообщений имеет свой собственный интерфейс.
Отношения между постами
Как видно из таблицы выше, поле post_parent
является важным, поскольку оно хранит информацию о взаимоотношениях между различными публикациями. Это включает:
- родительские и дочерние страницы
- редакции и пост, к которому они относятся
- вложения и сообщение, на которое они были загружены
Вы можете использовать поле post_parent
различными способами в своих запросах. Например, чтобы запросить дочерние страницы данной страницы, вы должны использовать следующее, где ID
— это идентификатор родительской страницы:
1
|
‘post_parent’ => ‘ID’
|
Вы можете использовать аналогичный запрос для отображения вложений, загруженных в данное сообщение, или же вы можете запросить вложения без родительского элемента (т. Е. Те, которые загружены непосредственно на экран мультимедиа на панели мониторинга).
Для этого вы должны использовать следующий аргумент:
1
|
‘post_parent’ => ‘0’
|
Крайне маловероятно, что вам когда-либо понадобится запрашивать изменения, поскольку вы хотите, чтобы посетители видели только ваш опубликованный контент.
Вы также можете использовать post_parent_in
с массивом идентификаторов для идентификации дочерних элементов ряда сообщений или страниц.
Резюме
Понимание таблицы wp_posts
и того, что она хранит, является важной частью понимания базы данных WordPress. Как вы уже видели, таблица wp_posts
используется для хранения сообщений, которые включают пять встроенных типов сообщений (включая сообщение), а также любое количество пользовательских типов сообщений, которые вы добавляете сами.
В таблице также хранятся данные об отношениях между постами в поле post_parent
.