5

サービスのリストを価格別に表示しようとしています。カスタム投稿タイプとカスタム フィールドなどを設定しました。しかし、ページでクエリを実行すると、最も高価なサービス (£100) が最後ではなく最初に表示されます... 私が書いたクエリは以下のとおりです。

$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です。

前もって感謝します!

4

2 に答える 2

6

あなたが提供したリンクは、文字列の順序 (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',
'order' => 'ASC', ));

ここで可能な「オーダーバイ」を確認できます: https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

于 2016-09-29T15:53:06.427 に答える