Одна из особенностей, которая делает WordPress мощной системой управления контентом, заключается в возможности использования таблицы wp_postmeta для хранения произвольных полей. Эти произвольные поля могут содержать в себе дополнительную информацию – к примеру, данные, связанные с SEO, которые зачастую добавляются при помощи плагинов. Также эти поля могут использоваться для вывода дополнительного контента во фронтэнде.
Путем добавления этой дополнительной информации к полям вы можете создавать произвольные запросы, позволяющие организовать вывод контента.
Изучение работы с этими данными является прекрасным способом освоить базовые понятия PHP, включая массивы, циклы и объекты. Чтобы стать гуру в сфере метаданных, вы должны научиться работать с массивами всех типов.
В этой серии руководств я покажу вам разные способы обработки метаданных записей и пользовательских метаданных на конкретных примерах с массивами.
Вы поймете разницу между индексным массивом и ассоциативным массивом, научитесь работать с многомерными массивами.
Что представляют собой метаданные записей?
Если говорить техническим языком, то метаданные записей – это любая информация, которая хранится в таблице wp_postmeta. В том случае, если плагин или тема добавляет произвольное поле, любая информация, введенная в это поле, будет сохранена в таблицу wp_postmeta.
Хороший пример: SEO-поля, которые добавляет SEO-плагин. В качестве примера можно назвать мета-поле description для записи. Данные из этого поля сохраняются в таблицу postmeta.
Помимо этого, существующие в WordPress профили пользователей могут быть расширены путем введения произвольных полей. Значения этих полей хранятся в таблице wp_usermeta.
В данной статье мы не будем обсуждать, как добавить произвольные поля в WordPress – эта тема выходит за пределы рассматриваемого нами курса. Произвольные поля могут быть добавлены и в редактор записей, что осуществляется разными путями – к примеру, с помощью специализированных фреймворков, таких как Pods или Advanced Custom Fields.
Методы получения метаданных
С помощью 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 содержит значение «J.R.R. Tolkien». WP_Query позволяет нам легко осуществить это. Более детально мы рассмотрим WP_Query в четвертой части данной серии статей.
Записи – это не предел!
Записи – это далеко не единственный тип данных, у которого имеются метаданные. Видели ли вы все те поля, которые доступны в профилях пользователей? Все они представляют собой мета-поля, которые сохраняются в таблице wp_usermeta.
Также у нас есть отдельные функции и классы для получения пользовательской мета-информации. Функции get_user_meta() и get_author_meta() являются эквивалентами получения метаданных для записей. WP_Query также имеет свой собственный эквивалент — WP_User_Query.
Объекты против массивов
Когда вы будете использовать функции, такие как get_post_meta(), для возвращения более чем одного поля, вы, скорее всего, получите то, что называется многомерным массивом. Многомерный массив также называют массивом массивов. Каждый массив в многомерном массиве может являться многомерном массивом сам по себе.
Звучит непонятно? Не переживайте! В этой серии статей мы покажем вам, как получить необходимый индекс в многомерном массиве.
Наконец, как мы уже упоминали ранее, другой метод получения информации о записи состоит в использовании WP_Query. При использовании класса WP_Query вам возвращается объект. В некоторых случаях объекты могут содержать в себе массивы с информацией. Работая с объектом, вы можете использовать любую функцию, доступную для класса. Это означает, что помимо возвращения значений мета-полей мы можем также использовать внутренние методы WP_Query, наиболее популярным из которых является the_post().
Далее
В этой статье мы изучили разные типы метаданных, посмотрели, как они сохраняются, как они выводятся на экран, а также как получить их.
В следующих статьях серии мы рассмотрим каждый аспект таблиц метаданных, изучим связанные с этим API, а также посмотрим, как ввести с их помощью большую функциональность и гибкость в свои проекты.
Источник: wp.tutsplus.com