Один из факторов, который делает WordPress мощным CMS инструментом — это возможность использовать таблицу wp_postmeta для хранения собственных полей. Эти поля могут содержать дополнительную информацию, например SEO-поля, добавленные SEO плагином, или могут быть использованы для отображения дополнительного контента клиентской части.

Добавляя к полям эту дополнительную информацию, вы можете создавать собственные запросы для организации отображения вашего контента.

Обучение работе с этими данными — хороший способ выучить базовые понятия PHP, такие как массивы, циклы и объекты. Чтобы полностью овладеть мета-данными WordPress, вы должны овладеть всеми видами массивов.

В этом руководстве я покажу вам разные способы работы с мета-данными WordPress записей, а также с мета-данными пользователей в качестве примеров работы с массивами.

Что такое мета-данные записи?

Самое техническое определение мета-данных записи — это любая информация, хранимая в таблице wp_postmeta. По умолчанию там не так уж много информации, но плагин или тема в любой момент могут добавить свое поле, а данные, введенные в это поле, будут храниться в таблице wp_postmeta. Хороший пример — SEO-поля, добавляемые SEO-плагином. Например, вспомните мета-описание вашего поста. Это поле хранится в таблице wp_postmeta.

Также собственными полями могут быть дополнены профили пользователей WordPress. И как для таблицы wp_posts есть таблица wp_postmeta, так данные для пользователей хранятся в таблице wp_usermeta, а не в таблице wp_user.

В этой серии статей мы не будем говорить о том, как добавлять собственные поля в WordPress — это отдельная тема. Собственные поля могут быть добавлены в редакторе записи с помощью мета-блока "Произвольные поля", могут быть добавлены напрямую плагином или темой, а также через использование специального фреймворка, по типу Pods или Advanced Custom Fields.

Технически, мета-данные записи — это любая информация, хранящаяся в таблице 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 содержится значение 'Tolkien'. WP_Query позволяет нам делать это очень просто — мы рассмотрим это подробнее в следующем руководстве этой серии.

Не записями едиными

Мета-данные есть не только у записей. Например, вы знаете все поля, которые доступны в профиле пользователя? Это мета-поля, но хранятся они не в wp_postmeta, а в таблице wp_usermeta.

В результате, у нас есть отдельные функции и классы для мета-данных пользователя. Функции get_user_meta() и get_author_meta() — эквивалент аналогичным командам записей. У WP_Query тоже есть свой эквивалент для пользователей — WP_User_Query.

Объекты или массивы

Когда вы используете функции типа get_post_meta() для получения более чем одного поля, вы, скорее всего, получите то, что называется многомерным массивом. Многомерный массив также известен как массив массивов. Каждый массив внутри многомерного массива может в свою очередь тоже быть многомерным.

Звучит страшно? Не бойтесь! В этой серии статей мы расскажем о том, как читать многомерные массивы для того, чтобы получить нужную вам информацию.

И наконец, как мы упоминали ранее, другой метод получения информации о записи — это использование WP_Query. Когда вы используете класс WP_Query, вы используете то, что называется объектно-ориентированным PHP, и в результате вы получаете не массив — вы получаете объект.

В некотором роде объекты похожи на массивы — они могут содержать массивы данных. Но к объекту вы можете применять любую функцию класса. То есть, мы можем не только использовать объект WP_Query для возвращения значения мета-поля, но также можем использовать его внутренние методы, самый популярный из которых — the_post().

В следующем выпуске…

В данный момент мы рассмотрели разные типы мета-данных, способ их хранения и представления, а также способы их получения.

В продолжение этой серии статей мы рассмотрим подробнее каждый аспект таблиц мета-данных, связанные с ними API, а также как мы можем использовать их для внедрения новых функций в наши проекты.

Источник: code.tutsplus.com

Вам понравился материал?

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

2 комментария

сначала новые
по рейтингу сначала новые по хронологии

Народ может кто подскажет. С какого то перепугу сайт http://d-nk.com.ua/ начал грузить проц хостера.

Вот что пишет Хостинг

"В том-то и проблема, что определить причину нагрузки не удается.

Я просмотрел нагрузку по вашему аккаунту с начала лета — она медленно, но постоянно растет — где-то в начале июня она в среднем перевалила через 1%, в начале октября — через 2%, в середине ноября — через 3%.

Потому мне кажется — где-то какие-то данные, которые используются при генерации страниц, накапливаются и таким образом замедляют обработку страниц все дальше и дальше.

Больше всего строк у вас в таблицах: wp_comment_rating, wp_login_fails, wp_postmeta, wp_term_relationships, wp_yapp_related_cache.

Первым делом я бы попробовал отключить комментарии или систему их оценки (рейтинга). Возможно при этом стоит удалить содержимое таблицы (можно перед этим сделать бекап содержимого).

login_fails теоретически должна влиять только на вход в админку.

Что хранится в postmeta я, к сожалению, не знаю, а это самая большая таблица. Про term_relationships я также ничего не знаю, но она поменьше.

yapp_related_cache — это скорее всего таблица какого-то модуля. Если есть идеи — какого, можно попробовать его отключить/удалить."

То есть какую из этих таблиц можно смело почистить не нанеся вред работе сайта

Александр

Класс, буду ждать продолжения.
Больше бы статей затрагивающих и PHP заодно, чтобы понимать как это сделано а не слепо повторять то что описано в статьях.