Проблемы с date_query: не все записи возвращаются в указанном диапазоне дат
Я получаю очень странные результаты при использовании параметра date_query в get_posts. У меня есть запись, для которой:
date('Y-m-d H:i', get_post_time('U', false, $postid))
возвращает:
2014-04-03 10:42
Эта запись нормально возвращается через get_posts с такими аргументами:
$args = array(
'post_type' => 'post',
'cat' => 41,
'fields' => 'ids'
);
Но не возвращается с такими аргументами:
$args = array(
'post_type' => 'post',
'date_query' => array(
'after' => '1980-01-01',
'before' => '2100-01-01',
),
'cat' => 41,
'fields' => 'ids',
);
Другие записи возвращаются нормально. В чем может быть проблема? Может date_query проверяет что-то другое, чем get_post_time?

Ваш синтаксис для date_query
некорректен. Должен использоваться массив массивов, а не просто массив.
Также я подозреваю, что ваша проблема связана с PHP, а не с WordPress.
Ваша дата before
недействительна. PHP поддерживает только даты между 13 декабря 1901 года и 19 января 2038 года, поэтому ваши даты должны находиться в этом диапазоне. Для справки см. date
Также вам следует включить параметр 'inclusive' и установить его в true
для точных совпадений.
Ваш запрос должен выглядеть примерно так:
$args = array(
'post_type' => 'post',
'date_query' => array(
array(
'after' => '1980-01-01',
'before' => '2038-01-01',
'inclusive' => true,
),
),
'cat' => 41,
'fields' => 'ids',
);
