До сих пор в этой серии мы рассмотрели основные типы контента в 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, и это то, что я расскажу в следующей части этой серии.