2017-02-21 82 views
1

我試圖訂購wp_query,其中包括一個meta_query ...
經過一些不同的方法,似乎查詢無法排序,因爲我包括meta_queryorderby => ID默認使用(我認爲),它不能被覆蓋。任何想法如何實現這一目標?
這裏的PHP代碼我只使用由meta值顯示帖子:WP_查詢訂單的自定義元值,然後通過修改訂購

$paged = get_query_var('paged') ? get_query_var('paged') : (get_query_var('page') ? get_query_var('page') : 1); 
$args = array(
    'post_type' => 'post', 
    'post_status' => 'publish', 
    'paged' => $paged, 
    'meta_query' => array(
     array(
      'key' => 'subtitrare', 
      'value' => 'romana', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 

$listing_query = null; 
$listing_query = new WP_Query($args); 
if ($listing_query->have_posts()) : get_template_part('loop-item'); 
endif; 
wp_reset_postdata(); 

正如你可以看到我也分頁的結果,這樣我就可以使用相同的$args。我試圖使用自定義函數來重新排列結果,但它不適合我。

+2

你想要訂購什麼? –

+0

嘗試orderby - >修改沒有成功。所以我想通過修改日期來對它進行排序DESC –

+0

我會重寫一下它。我想在wp_post的post_modified後重新排列結果。因此,它們首先使用默認的meta_id由meta_value進行排列,並通過post_modified重新排列結果。 –

回答

0
$args = array(
    'post_type' => 'post', 
    'post_status' => 'publish', 
    'paged' => $paged, 
    'orderby' => 'modified', 
    'order' => 'DESC', 
    'meta_query' => array(
     array(
      'key' => 'subtitrare', 
      'value' => 'romana', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 

這是你需要的代碼,但你已經說過你試過這個。這將返回所有具有自定義字段值設置爲LIKE'romana'的帖子。你使用這段代碼得到的結果是什麼?

+0

這是我試過的第一個。相信我:) ...問題是,由於meta_query,查詢忽略了這個命令...默認情況下,meta_query是由meta_id(我認爲)安排,所以如果你把另一個'orderby'放在查詢...這需要另一種方法,如「存儲」或任何第一個查詢,並在post_modified後重新排列它。顯然你的建議沒有奏效,雖然我第一次嘗試了,但我現在再次嘗試並保持不變。 –