Общие сведения и работа с типами контента в 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.