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