Статьи

Понимание и работа с постами в WordPress

Как и во многих примерах терминологии WordPress, термин «посты» может сбивать с толку, поскольку он относится к типу поста, а также к типу контента, хранящегося в конкретной таблице базы данных.

Здесь я поясню разницу между этими двумя типами и подробно рассмотрим типы сообщений.

В предыдущей части этой серии я рассмотрел различные типы контента в WordPress, которые хранятся в нескольких разных таблицах базы данных. Эти:

  • сообщений
  • пользователи
  • Комментарии
  • связи

В этом уроке я рассмотрю посты более подробно и опишу типы постов, отношения между ними и то, как понимание всего этого может помочь вам работать с ними.

Во-первых, я начну с определения постов и того, как они отличаются от постов (да, это сбивает с толку, и добавление заглавной буквы не делает все намного понятнее!):

  • post — это элемент содержимого, хранящийся в таблице wp_posts . Каждому назначен post_type , который может быть post , page или чем-то еще.
  • Сообщение — это тип сообщения, используемый для сообщений в блоге или новостей, в зависимости от типа сайта, который вы разрабатываете.

Таблица wp_posts показана на рисунке ниже.

Есть смысл? Если нет, читайте дальше, все станет ясно!

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 .