修改循环内的wordpress查询参数

时间:2014-02-28 14:39:25

标签: php wordpress

如果没有与查询匹配的帖子,我想更改WP_query参数。 具体来说,我想更改monthnum值,如果没有显示当前月份的帖子,我想再次使用新的monthnum值运行查询。

$query = new WP_Query (array('category_name'=> $cat,'year' => $ano, 'monthnum' => $monthnum, 'posts_per_page' => $posts_per_page, 'post__not_in' => array($id)));   

if ($query->have_posts()) : ?>
    while ($query->have_posts()) : $query->the_post(); 

    //do something      

    endwhile;
else:

    $monthnum = $monthnum - 1;
    if($monthnum == 0){
        $monthnum = 12;
    }

    /*
      here I want to run the query again with the new $monthnum value
    */

endif;
wp_reset_query();

你知道解决方案吗?请帮帮我!感谢。

1 个答案:

答案 0 :(得分:2)

也许您可以将参数更改为旧WP_Query - 我不知道。但是为每个查询创建一个新的WP_Query很容易:只需将参数数组保存在变量中,而不是直接将其传递给WP_Query,您可以根据需要随时修改它。缩写代码:

$params = array('category_name'=> $cat, 'year'=> $ano, 'monthnum'=> $monthnum, 
                'posts_per_page'=> $posts_per_page, 'post__not_in'=> array($id));

$query = new WP_Query($params);   
while (! $query->have_posts()) {
    $params['monthnum'] -= 1;
    if ($params['monthnum'] == 0) {
        $params['year'] -= 1;
        $params['monthnum'] = 12;
    }

    $query = new WP_Query($params);
}