Частью того, что делает WordPress мощным инструментом CMS, является возможность использовать таблицу wp_postmeta
для хранения пользовательских полей. Эти пользовательские поля могут содержать дополнительную информацию, такую как поля SEO, добавленные плагином SEO, или могут использоваться для отображения дополнительного внешнего интерфейса.
Добавляя эту дополнительную информацию к полям, вы можете создавать собственные запросы для организации отображения вашего контента.
Научиться работать с этими данными — отличный способ изучить основные понятия PHP, включая массивы, циклы и объекты. Чтобы стать мастером метаданных WordPress, вы должны освоить массивы всех видов.
В этой серии руководств я покажу вам различные способы работы с метаданными WordPress и метаданными пользователей в качестве конкретных примеров работы с массивами.
Вы узнаете разницу между индексированным массивом и ассоциативным массивом, а также узнаете, как понимать многомерные массивы.
Что такое пост метаданные?
Наиболее техническое определение метаданных публикации — это любая информация, которая хранится в таблице wp_postmeta
. По умолчанию это немного, но каждый раз, когда плагин или тема добавляет настраиваемое поле, данные, введенные в это поле, будут сохранены в таблицу wp_postmeta
.
Хорошим примером будут поля SEO, которые добавляет плагин SEO. Например, подумайте о мета-описании поста. Это поле хранится в таблице postmeta.
Кроме того, профили пользователей в WordPress могут быть расширены с помощью пользовательских полей. В отношениях, которые отражают wp_posts
и wp_postmeta
, эти поля хранятся в таблице wp_usermeta
не в таблице wp_user
.
В этой серии мы не будем обсуждать, как добавлять настраиваемые поля в WordPress — это отдельная тема. Настраиваемые поля можно добавить в редакторе сообщений с помощью мета-поля «Настраиваемые поля», внедрив их непосредственно в плагин или тему или используя специализированную среду, такую как Pod или Advanced Custom Fields .
Технически говоря, метаданные post — это любая информация, которая хранится в таблице wp_postmeta
. Как мы уже упоминали, хорошим примером публикации метаданных является поле мета-описания, которое вводится с помощью плагинов, таких как WordPress SEO.
Методы получения метаданных
Использование get_post_meta ()
WordPress предоставляет нам различные способы получения метаданных для публикации.
Мы можем получить только одно поле, используя get_post_meta()
, указав это поле. Например, чтобы получить поле с именем ‘foo’ из текущего поста в цикле, мы можем сделать get_post_meta( get_the_id(), 'foo', true );
,
Обратите внимание, что мы установили для последнего аргумента значение true
. Этот аргумент, называемый «single», определяет, хотим ли мы вернуть одно значение или массив значений. Если бы мы хотели, мы могли бы получить все значения для сообщения в одну переменную или все значения из поля.
Использование WP_Query
Иногда мы хотим построить весь цикл вокруг метаданных, и именно здесь WP_Query
очень полезен. WP_Query
позволяет нам делать так называемый «мета-запрос», в котором мы запрашиваем посты на основе одного или нескольких мета-полей и возвращаем посты, значения которых соответствуют определенному значению. Результатом является коллекция, через которую мы можем зацикливаться.
Например, представьте, что у нас есть поле с именем «author_name», и мы хотим возвращать каждый пост, где поле author_name
имеет значение «JRR Tolkien». WP_Query
позволяет нам сделать это легко — мы рассмотрим это подробно в четвертой части этой серии.
Сообщения не все!
Сообщения не единственный тип данных, который имеет метаданные. Например, вы знаете все те поля, которые доступны в профиле пользователя? Это все мета-поля, вместо того, чтобы храниться в таблице wp_postmeta
, они хранятся в таблице wp_usermeta
.
В результате у нас есть специальные функции и классы для метаинформации пользователя. Функции get_user_meta()
и get_author_meta()
эквивалентны метаданным get post для пользователей. WP_Query
также имеет собственный пользовательский эквивалент — WP_User_Query
.
Объекты против массивов
Когда вы используете функции, такие как get_post_meta()
чтобы вернуть более одного поля, вы, скорее всего, получите то, что называется многомерным массивом. Многомерный массив также известен как массив массивов. Каждый массив в многомерном массиве может быть многомерным массивом.
Звук сбивает с толку? Не волнуйся! В этой серии мы рассмотрим, как читать многомерные массивы, чтобы «детализировать» нужный вам индекс.
Наконец, как мы упоминали ранее, другой способ получения информации о публикации — это использование WP_Query
. Когда вы используете класс WP_Query
вы используете то, что называется объектно-ориентированным PHP, и то, что вы возвращаете, отличается от массива — это объект.
В некотором смысле объекты похожи на массивы в том смысле, что они могут содержать массивы информации. Но с объектом вы можете использовать любую из функций, доступных в классе. Это означает, что мы можем не только использовать объект WP_Query для возврата значения для метаполя, но мы также можем использовать его внутренние методы, наиболее распространенным из которых является the_post()
.
Следующий…
На данный момент мы взяли обзор различных типов метаданных, как они хранятся, как они могут быть представлены и как их получить.
Продолжая эту серию, мы более глубоко рассмотрим каждый аспект таблиц метаданных, связанные API-интерфейсы и то, как мы можем использовать их для введения функциональности и гибкости в наши проекты.