Выборка по дате в WordPress: обзор

Мы можем отображать сообщения, опубликованные в определенные даты, с помощью параметров даты в классе WP_Query.

Однако функциональность этого класса примитивна. Мы можем запросить сообщения за день, год или месяц, но у нас нет возможности сделать запрос на выборку постов за некоторый специфичный интервал времени. Став однажды жертвой этого, я воспользовался хаком.

Однако (благодаря Алексу Миллису (Alex Millis), предоставившему код) в версию WordPress 3.7 (вышедший недавно релиз) входит патч Advanced Date Query, который позволяет нам отображать более сложные запросы на выборку постов по времени по сравнению с первоначальным классом WP_Query.

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

Патч Advanced Date Query

В версии 3.7 введен новый параметр - date_query. Как его использовать?
Предположим, вы работаете над новым сайтом и хотите выделить новости (или сообщения), датированные прошлой неделей.

Используя date_query, мы можем написать что-то, подобное этому:

$last_week_news = new WP_Query( array(  
    'date_query' => array(  
        array(  
            'after' => '1 week ago',  
            ),  
        ),  
        'posts_per_page' => 5,  
    ));  
$query = new WP_Query( $last_week_news );

Мы можем также выводить посты, опубликованные в особенный временной интервал. Ниже показан пример того, как мы отображаем сообщения с 15 декабря 2012 года по 15 января 2013 года.

Таким образом, мы выводим информацию, опубликованную на рубеже конца одного и начала другого года.

$new_year_stories = new WP_Query( array(  
    'date_query' => array(  
        array(  
            'after' => 'December 15th, 2012',  
            'before' => 'January 15th, 2013',  
        ),  
    ),  
    'posts_per_page' => 5,  
));  
$query = new WP_Query( $new_year_stories );

И, как уже отмечалось, мы можем отображать сообщения, которые были опубликованы в определенные часы.

Если вам нужно на вашем новостном сайте отображать утренние новости, вы можете написать код, используя date_query, подобным образом:

$morning_news = array(  
    'date_query' => array(  
        array(  
            'hour'      => 6,  
            'compare'   => '>=',  
        ),  
        array(  
            'hour'      => 9,  
            'compare'   => '<=',  
        ),  
    ),  
    'posts_per_page' => 10,  
);  
$query = new WP_Query( $morning_news );

Такой подход, честно говоря, проще, и код становится более удобным для чтения.

Заключительные мысли

С добавлением патча Advanced date query, класс WP_Query стал еще более обширным. Если отслеживание дат важно для вашего сайта, например, если вы организатор мероприятий или ответственны за несколько конференций или собраний, это новая функция будет, определенно, очень полезна вам.

За подробной информацией о Date Parameters вы можете обратиться к WordPress Codex.

РедакцияПеревод статьи «A look into: WordPress Date Query»