query_posts年份参数返回0个帖子

时间:2016-01-16 21:13:55

标签: wordpress wp-query

我有一个自定义帖子类型,在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日创建的帖子。我也可以成功地按wmonthnum进行过滤。它只是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 个答案:

没有答案