2013-01-01 77 views
0

我想顯示一些具有特定元鍵值的「藝術品」。每件作品都有一個自定義字段:「votes_average」和另一個「votes_count」。這是我的自定義查詢:自定義WP_Query - meta_query被忽略

$args = array(
    'post_type' => 'artworks', 
    'post_status' => 'publish', 
    'orderby' => 'meta_value_num', 
    'order' => 'DESC', 
    'meta_query' => array(
     'relation' => 'AND', 
     array(
      'key' => 'votes_average', 
      'value' => '6', 
      'compare' => '>=', 
      'type' => 'DECIMAL', 
     ), 
     array(
      'key' => 'votes_count', 
      'value' => '1', 
      'compare' => '>', 
      'type' => 'NUMERIC', 
     ), 
    ), 
    'tax_query' => array(
     array(
      'taxonomy' => 'type', 
      'field' => 'slug', 
      'terms' => $term 
     ) 
    ) 
); 

我不明白爲什麼這個查詢顯示平均爲5,8的藝術品。我犯了一個錯誤嗎?

+0

¿什麼是你的例子正確的平均值? –

+0

5.8,我說了^^' –

回答

0

問題是MySQL在5.8到6之間舍入並在查詢中使用。適當的查詢部分看起來像

(wp_postmeta.meta_key = 'votes_average' AND CAST(wp_postmeta.meta_value AS DECIMAL) >= '6') 

因此,您可以用NUMERIC替換DECIMAL來解決此問題。

array(
     'key' => 'votes_average', 
     'value' => '6', 
     'compare' => '>=', 
     'type' => 'NUMERIC', 
    ), 
+1

謝謝你的解釋。平均5,8的作品不再出現。謝謝你,新年快樂! –