В первых двух частях этой серии я представил базу данных WordPress и ее структуру и показал, как управляются отношения между различными типами контента .
Здесь я рассмотрю типы контента более подробно и опишу различные типы контента в WordPress и как они взаимодействуют.
Когда мы думаем о контенте в WordPress, мы обычно думаем о постах и страницах. Но все не так просто. WordPress использует несколько типов контента, и посты и страницы являются лишь двумя примерами одного из них.
Понимание типов контента, того, как они хранятся и как они взаимодействуют друг с другом, поможет вам овладеть WordPress на более продвинутом уровне и написать сложные запросы для ваших тем и плагинов.
Давайте взглянем!
Основные типы контента в WordPress
В WordPress есть четыре вида контента:
- сообщений
- Комментарии
- пользователи
- связи
Многие из них ведут себя совершенно одинаково, как мы увидим.
Сообщений
Сообщения являются наиболее важным типом контента в WordPress. Терминология вокруг них может сбивать с толку, поскольку post используется для описания чего-либо в таблице wp_posts
но также используется для описания определенного типа записи. Добавление следующего к запросу может показаться излишним, но это имеет смысл!
1
|
‘post_type’ => ‘post’
|
В WordPress встроено пять типов записей по умолчанию:
- Почта
- страница
- прикрепление
- пересмотр
- пункт меню навигации
Как я объяснил в предыдущем уроке этой серии, посвященном отношениям между данными , посты могут быть связаны друг с другом. Обычно это используется для определения того, к какому сообщению или странице прикреплено вложение и какая страница является родительской для другой страницы.
Первые три типа постов будут знакомы разработчикам WordPress как посты, но менее очевидно, что последние два поста. Каждая ревизия сохраняется в таблице wp_posts
вместе с постом, к wp_posts
она относится как родитель (с использованием поля post_parent
), а элементы меню навигации сохраняются в виде постов и затем выводятся с помощью запроса при отображении меню. Вот почему навигационные меню могут внезапно исчезнуть, если вы неправильно используете фильтр pre_get_posts()
!
Вы можете добавить столько дополнительных типов записей, сколько вам нужно для вашего сайта, создавая собственные типы записей . Это просто дополнительные типы сообщений, которые ведут себя так же, как сообщения, страницы или вложения, в зависимости от того, как вы их настроили при регистрации типа сообщения.
Диаграмма ниже показывает таблицу wp_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.