В первых двух статьях этой серии я описал базу данных WordPress с ее структурой и показал, как работают отношения между разными типами контента.
В текущей статье мы посмотрим на типы контента более подробно; я расскажу вам, какие типы контента существуют в WordPress и как они взаимодействуют между собой.
Когда мы сталкиваемся с термином «контент» в WordPress, мы обычно вспоминаем о записях и страницах. Однако не все так просто. В WordPress используются многочисленные типы контента, записи и страницы – лишь два отдельных примера.
Умение работать с существующими типами контента, понимание того, как они взаимодействуют между собой и как хранятся, поможет вам раскрыть для себя WordPress уже на более высоком уровне, вы сможете писать сложные запросы в ваших темах и плагинах.
Давайте приступим к рассмотрению типов контента!
Основные типы контента в WordPress
Вообще, в WordPress существует четыре типа контента:
- Записи
- Комментарии
- Пользователи
- Ссылки
Многие из них обладают похожим поведением, как мы это увидим далее.
Записи
Записи – самый важный тип контента в WordPress. Принятая терминология может несколько сбить с толку, поскольку под записью обычно подразумевают что-либо, существующее в таблице wp_posts, однако этот термин также используется и для описания определенного типа записей (простите за тавтологию!) Добавление следующего кода к запросу может показаться излишним, но все же в этом есть смысл:
'post_type' => 'post'
В WordPress существует пять встроенных стандартных типов записей:
- Запись
- Страница
- Вложение
- Ревизия
- Пункт навигационного меню
Как я уже объяснял в предыдущей статье этой серии, раскрывая отношения между данными, записи могут быть связаны друг с другом. Это обычно используется, чтобы определить, к какой записи или странице прикреплено вложение, какая страница является родителем другой страницы, и т.д.
Первые три типа записей уже знакомы разработчикам WordPress под термином «записи», однако сложно представить себе, что два последних типа контента – это тоже записи. Каждая ревизия хранится в таблице wp_posts вместе с записью, с которой она связана родительскими отношениями (используя поле post_parent); каждый навигационный пункт меню хранится как запись и выводится через запрос при отображении меню. Именно по этой причине навигационные меню могут резко исчезнуть, если вы неправильно примените фильтр pre_get_posts().
Вы можете добавлять столько дополнительных типов записей, сколько вам нужно на вашем сайте, создавая произвольные типы записей. Они представляют собой новые типы записей, которые функционируют точно так же, как записи, страницы и вложения, в зависимости от того, как именно вы настроите их при регистрации типа записей.
На диаграмме ниже показана таблица wp_posts, а также таблицы, связанные с ней:
Комментарии
Комментарии хранятся в своей собственной таблице базы данных, wp_comments. Они похожи с записями в том плане, что каждый комментарий может обладать метаданными, присоединенными через таблицу wp_commentmeta, однако они имеют разный контент и разные поля, которые требуются их таблицам.
Комментарии связаны с записями посредством отношения «один-ко-многим»; также они связаны между собой посредством поля comment_parent – оно используется для определения комментариев, которые являются ответами на другие комментарии. Также комментарии могут быть связаны с таблицей wp_users, если они были оставлены зарегистрированными пользователями.
На диаграмме ниже показана таблица wp_comments и ее отношения:
Пользователи
Пользователи обладают своей собственной таблицей, wp_users, и также имеют метаданные, которые хранятся в таблице wp_usermeta. На первый взгляд, пользователи – это совершенно иной тип контента, сильно отличающийся от записей, однако на деле они похожи больше, чем вы думаете – они могут быть запрошены и выведены в архиве автора, они могут иметь контент в виде биографических данных. Этот контент структурирован в несколько ином виде, нежели в записях, ссылках и комментариях, что и привело к вынесению пользователей в отдельную таблицу.
Диаграмма ниже отражает таблицу wp_users и ее отношения:
Вы узнаете больше о пользовательских данных и о том, как они связаны с другими таблицами, в следующей части этой серии.
Ссылки
Заключительный тип контента – это ссылки. Они были постепенно выведены из WordPress, как только блогролл прекратил свое существование в версии 3.5.
Ссылки работают точно так же, как записи, в том плане, что они имеют контент и могут обладать термами таксономий, связанными с ними. Однако они отличаются от записей тем, что у них совсем другие поля, используемые для хранения данных, которые связаны с описанием ссылки, ее показателем target, и т.д. Ссылки не связаны с пользователями, поэтому им нельзя присвоить автора; также у них нет поля для идентификации родителя, поэтому они не могут присоединяться к записям – однако вы можете использовать таксономии для включения их на страницы архивов.
Таблица wp_links и ее отношения приведены в следующей диаграмме:
Примечание по метаданным
Три из четырех типов контента, раскрытых нами выше, могут обладать метаданными:
- Записи
- Комментарии
- Пользователи
Мы рассмотрим метаданные более детально позже в этой серии.
Заключение
Как мы увидели, в WordPress используется много разных типов контента, которые позволяют хранить данные, и которые связаны друг с другом разными типами отношений. Типы контента, хранящиеся в базе данных, не ограничены одними лишь записями и страницами – они также включают в себя и вложения, ревизии, пункты навигационного меню, произвольные типы записей.
Понимание того, как каждый из этих типов записей работает, в чем сходства и различия между ними, поможет вам разрабатывать более продвинутые, мощные и эффективные темы и плагины для WordPress.
Источник: code.tutsplus.com