2016-09-29 68 views
1

我試圖按價格顯示服務列表。我已經設置了自定義帖子類型和自定義字段等。但是,當我在頁面上運行查詢時,最昂貴的服務(100英鎊)顯示第一個而不是最後一個...我寫的查詢如下:WP_Query order by meta_value_num not working

$services = new WP_Query(array(
'post_type' => 'service', 
'tax_query' => array(
    array(
     'taxonomy' => 'service_type', 
     'field' => 'name', 
     'terms' => $post->post_name, 
    ), 
), 
'meta_key' => 'price', 
'post_status' => 'publish', 
'posts_per_page' => -1, 
'orderby' => 'meta_value_num', 
'order' => 'ASC',)); 

到頁面的鏈接在這裏dev.poshwashlondon.co.uk/valeting

在此先感謝!

+0

你鏈接的網頁上找到的條目似乎被訂購的字符串,而不是數字。如果您在查詢之前無法將它們轉換爲數字,那麼查詢必須考慮到這一點。 –

回答

1

您提供的鏈接清楚地顯示了字符串排序(100,15,20,25等)。您的問題似乎是查詢使用的元值不是數字,而是字符串。

你可以試試這個:

$services = new WP_Query(array(
'post_type' => 'service', 
'tax_query' => array(
    array(
     'taxonomy' => 'service_type', 
     'field' => 'name', 
     'terms' => $post->post_name, 
    ), 
), 
'meta_key' => 'price', 
'meta_type' => 'NUMERIC', 
'post_status' => 'publish', 
'posts_per_page' => -1, 
//'orderby' => 'meta_value_num', 
'orderby' => 'meta_value_numeric', 
'order' => 'ASC',)); 

你可以看一下可能的「排序依據」在這兒: https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters