Изучение WP_Meta_Query и WP_Date_Query

Изучение WP_Meta_Query и WP_Date_Query

От автора: в этом уроке мы рассмотрим два родственных класса WP_Meta_Query и WP_Date_Query в WordPress. Меньше слов, перейдем сразу к делу!

Работа со всеми типами мета данных в классе WP_Meta_Query

Класс WP_Meta_Query – класс хелпер, помогает классу WP_Query создавать запросы по мета данным. Как вам известно, в базе данных WordPress хранится три типа мета данных: мета данные постов, пользовательские мета данные и данные комментариев. В предыдущих уроках мы убедились в том, что внутри запросов в классах WP_Query, WP_User_Query и WP_Comment_Query можно создавать мета запросы (с помощью параметра ‘meta_query’). На самом деле класс WP_Meta_Query как раз и запускается, когда мы выполняем эти запросы.

Выходит, с помощью WP_Meta_Query можно получить SQL-запросы. В данный класс не возвращается результат выполнения запросов, он подготавливает SQL команды, которые вы можете использовать в других местах.

Примеры использования WP_Meta_Query

Без примеров эту статью нельзя назвать уроком, ведь так? На простом примере ниже я покажу, как использовать класс WP_Meta_Query в реальных ситуациях. (Получение SQL запроса из мета запроса очень специфичная вещь, но я постараюсь подобрать понятный пример).

Скажем, вы хотите создать плагин «похожие посты» на своем сайте. Плагин будет отображать список постов с одинаковыми мета данными по определенному ключу. И вместо создания мета запроса в объекте WP_Query, вы вытягиваете SQL запрос, чтобы потом динамически его использовать в отдельных кусках кода. Ниже показано, как это сделать:

<?php
global $wpdb;
$my_meta_query_args = array(
    'relation' => 'OR',
    array(
        'meta_key' => 'Some_Key',
        'meta_value' => 'Some_Value',
        'compare' => '='
    ),
    array(
        'meta_key' => 'Some_Other_Key',
        'meta_value' => 'Some_Other_Value',
        'compare' => '='
    )
);
$my_meta_query = new WP_Meta_Query;
$my_meta_query->parse_query_vars( $my_meta_query_args );
$my_meta_query_sql = $my_meta_query->get_sql( 'post', $wpdb->posts, 'ID' );
?>

Вот и все, в переменной $my_meta_sql хранится наш SQL запрос, который можно теперь использовать где угодно.

date запросы и класс WP_Date_Query

Как и WP_Meta_Query, класс WP_Date_Query является хелпером для WP_Query, WP_User_Query и WP_Comment_Query. Этот класс впервые появился в WordPress v.3.7. На тот момент данный класс не поддерживал WP_User_Query. И только начиная с версии 4.1 стало возможным создавать запросы внутри пользовательских таблиц (поле user_registered).

Подобно классу WP_Meta_Query и его способности запрашивать ключи и значения, с помощью класса WP_Date_Query можно получить данные из поста, комментария и таблицы пользователей. И также, как и с WP_Meta_Query, данный класс позволяет подготовить SQL-запрос.

Пример использования WP_Date_Query

Чтобы полностью понять принципа работы данного класса, разберем пример. Пример будет довольно специфичным, но без него не обойтись. Представим, что по какой-то причине нам необходимо вытащить все комментарии за прошедший месяц, добавленные до 12 дня. Ниже показан код этого странного запроса:

<?php
$my_date_query_args = array(
    array(
        'month' => date( 'n' ),
    ),
    array(
        'before' => 'noon'
    ),
    'relation' => 'AND'
);
$my_date_query = new WP_Date_Query( $my_date_query_args, 'comment_date' );
$my_date_query_sql = $my_date_query->get_sql();
?>

Не забывайте, что можно использовать относительный формат даты в PHP, очень полезная вещь. Совет: у Christian Bruckner написана замечательная статья о принципе работы WP_Date_Query на сайте great post on MarketPress.com. Она немного устарела (написана до выхода WordPress 4.1), но она написана понятным языком и легко читается.

Заключение

Два наших класса хелпера завершают долгое путешествие по классу WP_Query. Эта серия уроков была одной из самых длинных на сайте Tuts+. Спасибо, что дошли с нами до конца! В следующей (и последней) части вы закрепим пройденные навыки. Хотите что-нибудь добавить? Если так, не стесняйтесь оставлять свои мысли в комментариях. Если понравилась статья, не забудьте поделиться ей со своими друзьями!

Автор: Barış Ünver

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

Редакция: Команда webformyself.

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress “Уникальный сайт с нуля”

Получить

Метки: ,

Комментарии Вконтакте:

Комментарии Facebook:

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree