2014-02-28 52 views
0

如果沒有任何匹配查詢的文章,我想更改WP_query參數。 具體而言,我想更改monthnum值,如果沒有任何帖子顯示當前月份,我想用新的monthnum值再次運行查詢。在循環內修改wordpress查詢參數

$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(); 

您知道解決方案嗎?請幫幫我!謝謝。

+0

如果我理解正確,這不僅僅是一個替代查詢,如果沒有發現帖子,你想不斷減少月val直到發現帖子? –

回答

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); 
}