2016-09-29 69 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