Параметр года query_posts возвращает 0 сообщений
У меня есть собственный тип сообщения, отображающий сообщения в archive-CPT-name.php
файл шаблона и нужно фильтровать посты по годам. Когда query_var archive
присутствует, код ниже добавляется до цикла:
global $query_string;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$archive_year = get_query_var('archive', false);
query_posts( $query_string . '&year='.$archive_year.'&paged='.$paged );
Это возвращает 0 сообщений. Если я изменю year='.$archive_year.'
в day=16
, оставив все то же самое, тогда я правильно получаю сообщения, созданные 16-го числа. Я также могу фильтровать по w
а также monthnum
успешно. Это только year
параметр, который не работает.
Есть идеи, почему это может происходить?
Редактировать: $wp_query->request
включает в себя следующий SQL ... WHERE 1=1 AND ( YEAR( wp_posts.post_date ) = 2016 ) AND ( 0 = 1 ) ...
, Почему AND ( 0 = 1 )
быть включенным? Откуда это может исходить? Похоже, это может быть причиной моей проблемы.
Обновление: я использую следующий код в качестве обходного пути, но скорее выясню, почему вышеуказанный код не работает.
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$archive_year = get_query_var('archive', false);
$args = array('post_type' => 'repair-post', 'date_query' => array(array('year' => $archive_year)), 'paged' => $paged);
$loop = new WP_Query( $args );
if ($loop->have_posts()) :
while ( $loop->have_posts() ) :
?>