Работа с данными в WordPress. Часть 3: Работа с типами контента в WordPress

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

В текущей статье мы посмотрим на типы контента более подробно; я расскажу вам, какие типы контента существуют в WordPress и как они взаимодействуют между собой.

Когда мы сталкиваемся с термином «контент» в WordPress, мы обычно вспоминаем о записях и страницах. Однако не все так просто. В WordPress используются многочисленные типы контента, записи и страницы – лишь два отдельных примера.

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

Давайте приступим к рассмотрению типов контента!

Основные типы контента в WordPress

Вообще, в WordPress существует четыре типа контента:

  1. Записи
  2. Комментарии
  3. Пользователи
  4. Ссылки

Многие из них обладают похожим поведением, как мы это увидим далее.

Записи

Записи – самый важный тип контента в WordPress. Принятая терминология может несколько сбить с толку, поскольку под записью обычно подразумевают что-либо, существующее в таблице wp_posts, однако этот термин также используется и для описания определенного типа записей (простите за тавтологию!) Добавление следующего кода к запросу может показаться излишним, но все же в этом есть смысл:

'post_type' => 'post'

В WordPress существует пять встроенных стандартных типов записей:

  1. Запись
  2. Страница
  3. Вложение
  4. Ревизия
  5. Пункт навигационного меню

Как я уже объяснял в предыдущей статье этой серии, раскрывая отношения между данными, записи могут быть связаны друг с другом. Это обычно используется, чтобы определить, к какой записи или странице прикреплено вложение, какая страница является родителем другой страницы, и т.д.

Первые три типа записей уже знакомы разработчикам WordPress под термином «записи», однако сложно представить себе, что два последних типа контента – это тоже записи. Каждая ревизия хранится в таблице wp_posts вместе с записью, с которой она связана родительскими отношениями (используя поле post_parent); каждый навигационный пункт меню хранится как запись и выводится через запрос при отображении меню. Именно по этой причине навигационные меню могут резко исчезнуть, если вы неправильно примените фильтр pre_get_posts().

Вы можете добавлять столько дополнительных типов записей, сколько вам нужно на вашем сайте, создавая произвольные типы записей. Они представляют собой новые типы записей, которые функционируют точно так же, как записи, страницы и вложения, в зависимости от того, как именно вы настроите их при регистрации типа записей.

На диаграмме ниже показана таблица wp_posts, а также таблицы, связанные с ней:

working-with-data-in-wordpress-posts-table-and-related-tables

Комментарии

Комментарии хранятся в своей собственной таблице базы данных, wp_comments. Они похожи с записями в том плане, что каждый комментарий может обладать метаданными, присоединенными через таблицу wp_commentmeta, однако они имеют разный контент и разные поля, которые требуются их таблицам.

Комментарии связаны с записями посредством отношения «один-ко-многим»; также они связаны между собой посредством поля comment_parent – оно используется для определения комментариев, которые являются ответами на другие комментарии. Также комментарии могут быть связаны с таблицей wp_users, если они были оставлены зарегистрированными пользователями.

На диаграмме ниже показана таблица wp_comments и ее отношения:

working-with-data-in-wordpress-comments-table-and-related-tables

Пользователи

Пользователи обладают своей собственной таблицей, wp_users, и также имеют метаданные, которые хранятся в таблице wp_usermeta. На первый взгляд, пользователи – это совершенно иной тип контента, сильно отличающийся от записей, однако на деле они похожи больше, чем вы думаете – они могут быть запрошены и выведены в архиве автора, они могут иметь контент в виде биографических данных. Этот контент структурирован в несколько ином виде, нежели в записях, ссылках и комментариях, что и привело к вынесению пользователей в отдельную таблицу.

Диаграмма ниже отражает таблицу wp_users и ее отношения:

working-with-data-in-wordpress-users-table-and-related-tables

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

Ссылки

Заключительный тип контента – это ссылки. Они были постепенно выведены из WordPress, как только блогролл прекратил свое существование в версии 3.5.

Ссылки работают точно так же, как записи, в том плане, что они имеют контент и могут обладать термами таксономий, связанными с ними. Однако они отличаются от записей тем, что у них совсем другие поля, используемые для хранения данных, которые связаны с описанием ссылки, ее показателем target, и т.д. Ссылки не связаны с пользователями, поэтому им нельзя присвоить автора; также у них нет поля для идентификации родителя, поэтому они не могут присоединяться к записям – однако вы можете использовать таксономии для включения их на страницы архивов.

Таблица wp_links и ее отношения приведены в следующей диаграмме:

working-with-data-in-wordpress-links-table-and-related-tables

Примечание по метаданным

Три из четырех типов контента, раскрытых нами выше, могут обладать метаданными:

  1. Записи
  2. Комментарии
  3. Пользователи

Мы рассмотрим метаданные более детально позже в этой серии.

Заключение

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

Понимание того, как каждый из этих типов записей работает, в чем сходства и различия между ними, поможет вам разрабатывать более продвинутые, мощные и эффективные темы и плагины для WordPress.

Источник: code.tutsplus.com

Блог про WordPress
Добавить комментарий

Получать новые комментарии по электронной почте.