2017-01-27 67 views
1

我使用wp_query並使用元鍵對結果進行排序,問題是它排除了我在排序的列中沒有輸入任何內容的產品。我需要所有的產品,包括沒有評分最高的頂級產品。wp_query和元數據排序排除沒有條目的產品

else if($field == "rating") { 
    $myArgs = array(
     'posts_per_page' => -1, 
     'orderby'   => 'meta_value_num', 
     'order'   => 'DESC', 
     'include'   => '', 
     'meta_key'   => 'rating', 
     'post_type'  => 'job_listing', 
     'post_status'  => 'publish', 
     'job_listing_region' => 'London', 
     'compare' => '' 
    ); 
} 

更新:原來我wsn't得到我所需要的排序結果,改變了代碼以下,但結果仍然是獨家的非等級產品。

$myArgs = array(
     'orderby'   => 'meta_value_num', 
     'order'   => 'DESC', 
     'post_type'  => 'job_listing', 
     'post_status'  => 'publish', 
     'job_listing_region' => "'" . $city . "'", 
     'meta_query' => array(
      array(
       'key'  => 'rating', 
       'compare' => '<' 
      ), 
     ) 
    ); 
+0

可能的解決方案是保存默認(空)meta值與所有產品。 –

+0

該評級是用戶生成的,但我假設數據庫中有空白空間或NULL作爲默認值,可能是NULL。 –

+0

在那裏可能是空的。如果沒有用缺省值填充所有元值,我想不出任何解決方案。 –

回答

0

請嘗試這個 -

$myArgs = array(
    'post_type'  => 'job_listing', 
    'posts_per_page' => -1, 
    'meta_key'   => 'rating', 
    'orderby'   => 'meta_value', 
    'order'   => 'DESC',   
    'post_status'  => 'publish', 
    'job_listing_region' => 'London' 
); 
+0

這沒有奏效。 –