Общие сведения и работа с типами контента в WordPress

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

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

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

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

Давайте приступим!

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

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

  • записи;
  • комментарии;
  • пользователи;
  • ссылки.

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

Записи

Записи являются самым важным типом контента в WordPress. Можно немного запутаться в терминологии, так как термин «запись» характеризует содержимое таблицы wp_posts, а также служит для описания определенного типа записи. Добавление следующей строки в запрос может показаться излишним, но оно имеет смысл!

'post_type' => 'post'

Существует 5 типов записей по умолчанию, встроенных в WordPress:

  • запись (post);
  • страница (page);
  • вложение (attachment);
  • редакция (revision);
  • элемент меню навигации (navigation menu item).

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

Это, как правило, используется для определения того к какой записи или странице прикреплено вложение, и какая страница является родительской для другой страницы.

Первые три типа контента знакомы разработчикам 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.
Ссылки работают подобно записям: у них есть содержание и им можно присвоить элементы таксономии.

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

Ссылки не связаны с пользователями, поэтому им нельзя назначить автора. Также они не имеют поля для определения родителя, то есть не могут быть прикреплены к записи — но вы можете использовать таксономии, чтобы включить ссылки в архивные страницы.

Таблица wp_links и ее отношения с другими таблицами показаны ниже:

Ссылки

Замечание по поводу метаданных

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

  • записи;
  • комментарии;
  • пользователи.

Я рассмотрю метаданные более детально в следующих статьях и покажу вам, как они хранятся.

Обобщение

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

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

РедакцияПеревод статьи «Understanding and Working with Content Types in WordPress»