2016-09-29 6 views
1

Я пытаюсь показать список услуг по цене. Я установил пользовательский тип сообщения и настраиваемые поля и т. Д. Однако, когда я запускаю запрос на странице, самый дорогой сервис (100 фунтов стерлингов) отображается первым, а не последним ... Я написал следующий запрос:WP_Query orderby meta_value_num не работает

$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