До сих пор в этой серии мы рассмотрели основные типы контента в WordPress. Но как насчет дополнительных данных обо всем этом контенте?
Вот где метаданные вступают в игру.
Как я уже говорил в предыдущей части этой серии, WordPress имеет четыре основных типа контента, которые он хранит в четырех таблицах базы данных:
- сообщений
- пользователи
- Комментарии
- связи
Первые три из них могут также иметь назначенные им метаданные, и у каждого есть своя собственная таблица метаданных в базе данных для хранения этого.
Что такое метаданные?
Метаданные могут быть описаны как данные о данных. Википедия определяет два типа метаданных:
Структурные метаданные относятся к разработке и спецификации структур данных и более правильно называются «данные о контейнерах данных»; описательные метаданные , с другой стороны, касаются отдельных экземпляров данных приложения, содержимого данных.
По этому определению WordPress использует описательные метаданные. То, что мы определяем как данные в WordPress и что можно определить как метаданные, немного размыто и не соответствует непосредственно тому, что хранится в таблицах метаданных. Например:
- Для сообщений
post_type
является примером метаданных, но он хранится в таблицеwp_posts
- Термины, категории и теги таксономии также можно свободно определять как метаданные, но они хранятся полностью отдельно, в своих таблицах базы данных.
- Как и следовало ожидать, метаданные публикации, такие как настраиваемые поля и дополнительные метаданные, добавляемые с помощью плагинов, хранятся в таблице
wp_postmeta
.
Поэтому метаданные в WordPress проще воспринимать не в соответствии со строгим определением термина, а как данные, хранящиеся в трех таблицах метаданных.
Таблицы метаданных
WordPress использует три таблицы базы данных для метаданных:
-
wp_postmeta
хранит метаданные о постах (включая вложения, пункты меню навигации и ревизии) -
wp_commentmeta
хранит метаданные о комментариях -
wp_usermeta
хранит метаданные о пользователях
Единственный тип объекта в WordPress, у которого нет метаданных, — это ссылка.
Все таблицы метаданных почти идентичны в том смысле, что в них всего четыре поля:
- ID — это идентификатор сообщения, пользователя или комментария, к которому относятся метаданные.
- Meta ID относится к идентификатору записи метаданных
- Ключ — это мета-ключ (который часто дублируется между разными записями)
- Значение является мета-значением (которое имеет тенденцию быть уникальным)
WordPress может использовать эту структуру для хранения больших количеств метаданных, используя простую структуру. Это означает, что функции, которые вы используете для отображения и запроса метаданных для сообщений, пользователей и комментариев, очень похожи.
Метаданные, сохраненные WordPress
Метаданные, хранящиеся в отдельной установке WordPress, будут отличаться от тех, которые хранятся в другой установке, поскольку плагины и темы могут добавлять свои собственные метаданные, а также потому, что на некоторых сайтах вам нужно будет определять конкретные метаданные, а на других — нет.
Но давайте посмотрим на некоторые из наиболее распространенных типов метаданных:
- Пользовательские поля . Они применяются к сообщениям, поэтому хранятся в таблице
wp_postmeta
. Вы можете добавить их, используя стандартный интерфейс пользовательских полей или создав свои собственные метабоксы на экранах редактирования поста. Это может быть особенно полезно, когда вы хотите, чтобы пользователи могли добавлять метаданные к определенному типу записей, и вы хотите сделать интерфейс максимально удобным для пользователя. - Метаданные пользователя . В таблице
wp_usermeta
хранятся метаданные о большинстве пользователей, такие как роли, возможности, настройки панели мониторинга и даже имена и фамилии. - Метаданные, добавленные плагинами и темами . Плагины с функциональностью комментариев, такие как Akismet, будут добавлять метаданные в таблицу
wp_commentmeta
, в то время как плагины, которые позволяют добавлять метаданные к публикациям, такие как SEO-плагины, будут добавлять записи в таблицуwp_postmeta
. Теоретически вы можете добавить метаданные через вашу тему, но имеет больше смысла делать это в плагине, так как обычно это связано с функциональностью, а не с отображением.
Конечно, список не ограничен этими типами. Фактически, любые данные о публикациях, комментариях или пользователях, которые не могут быть сохранены в их основных таблицах базы данных, будут храниться в соответствующих таблицах метаданных.
Если вы добавляете новое поле для хранения данных, вы должны всегда использовать эти таблицы, а не основные таблицы.
Доступ и вывод метаданных
WordPress имеет API метаданных, который вы используете для добавления, изменения, получения и удаления метаданных. Существует ряд функций, специфичных для каждого типа метаданных, которые вы используете для вывода метаданных в файлах шаблонов: вы должны использовать их вместо любых общих функций метаданных.
Функции API метаданных для каждого типа контента очень похожи и имеют одинаковые параметры:
Добавление метаданных | Получение метаданных | Обновление метаданных | Удаление метаданных | |
---|---|---|---|---|
Сообщений | add_post_meta() |
get_post_meta() |
update_post_meta() |
delete_post_meta() |
пользователей | add_user_meta() |
get_user_meta() |
update_user_meta() |
delete_user_meta() |
Комментарии | add_comment_meta() |
get_comment_meta() |
update_comment_meta() |
delete_comment_meta() |
параметры | $post_id , $meta_key , $meta_value , $unique (необязательно) |
$post_id , $meta_key , $single (необязательно), |
$post_id , $meta_key , $meta_value , $prev_value (необязательно) |
$post_id , $meta_key , $meta_value (необязательно) |
Эти функции могут использоваться в ваших файлах шаблонов и плагинах, например, в шаблоне отдельной публикации вашей темы, вы можете использовать следующее для вывода метаданных о публикации:
1
2
3
4
5
6
7
|
<?php
$metavalue = get_post_meta( get_the_ID(), ‘my_meta_key’ true);
// check if the custom field has a value
if ( ! empty( $metavalue ) ) {
echo $metavalue;
}
?>
|
Это всего лишь один очень простой способ вывода некоторых метаданных — существует гораздо больше возможностей, некоторые из которых я расскажу позже в этой серии.
Резюме
WordPress использует три таблицы метаданных для хранения данных о трех типах контента: сообщения, пользователи и комментарии. Эти таблицы используются для всего, что не хранится в основных wp_posts
, wp_users
и wp_comments
, и являются таблицами, в которые следует записывать данные, если вы добавляете новые поля с помощью тем или плагинов. Три таблицы работают практически одинаково и имеют очень похожие функции, которые вы можете использовать для добавления, обновления, удаления и получения метаданных.
Как я упоминал выше, термины таксономии можно рассматривать как другой тип метаданных в WordPress, и это то, что я расскажу в следующей части этой серии.