複数のメタキーとフィールド/カスタムフィールドでクエリを並べるには?
これは私のコードです:
$args = array
(
'post_type' => 'listing',
'posts_per_page' => -1,
'tax_query' => array
(
array
(
'taxonomy' => 'listing_category',
'field' => 'slug',
'terms' => urldecode($category)
),
array
(
'taxonomy' => 'location',
'field' => 'slug',
'terms' => urldecode($location)
)
),
//*** THIS NOT WORK
'meta_query' => array
(
array(
'key' => 'listing_status',
'orderby' => 'meta_value',
'order' => ASC,
),
array(
'key' => 'listing_total_rank',
'orderby' => 'meta_value',
'order' => DESC,
),
array(
'key' => 'listing_free_date',
'orderby' => 'meta_value',
'order' => ASC,
),
array(
'key' => 'title',
'orderby' => 'meta_value',
'order' => ASC,
),
),
//***
);
$listings = new WP_Query( $args );
'meta_query'
の一部はコード内では機能しません。
値を設定せずにメタクエリを使用しています。あなたがそれをしている方法はそれらを注文するためではなく、投稿を問い合わせるために使用しています。
投稿をさまざまなメタデータで並べ替えるには、メタクエリに名前を付け、それを使って順序を設定します。これはあなたのための簡単な例です:
$args = array(
'meta_query' => array(
'relation' => 'AND',
'query_one' => array(
'key' => 'key_one',
'value' => 'value_one', // Optional
),
'query_two' => array(
'key' => 'key_two',
'compare' => 'EXISTS', // Optional
),
),
'orderby' => array(
'query_one' => 'ASC',
'query_two' => 'DESC',
),
) );
WP_Query()
のコーデックスページの this セクションをチェックして、投稿の並べ替えに慣れてください。