2016-09-29 3 views
1

가격순으로 서비스 목록을 표시하려고합니다. 나는 사용자 지정 게시 유형 및 사용자 정의 필드 등을 설정했습니다. 그러나 페이지에서 쿼리를 실행하면 가장 비싼 서비스 (£ 100)가 마지막 대신 표시됩니다 ... 아래에 작성한 쿼리는 다음과 같습니다.WP_Query orderby 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',)); 
당신은 가능한 "ORDERBY"에서 볼 수

여기에 S : 당신이 링크 된 페이지에서 볼 https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters