Параметр года 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() ) : 
?>

0 ответов

Другие вопросы по тегам