Ми можемо показати повідомлення, опубліковані в певні дати, з допомогою параметрів дати в класі 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’ => ‘ 10,
);
$query = new WP_Query( $morning_news );

Такий підхід, чесно кажучи, простіше, і код стає більш зручним для читання.

Заключні думки

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

За детальною інформацією про Date Parameters ви можете звернутися до WordPress Codex.

Переклад статті «A look into: WordPress Date Query» був підготовлений дружною командою проекту Сайтостроение від А до Я.