一覧ページの記事の並び順を複数のカスタムフィールドの値で制御する

この記事ではソートを複数のカスタムフィールドで制御したい場合についての解説です。
この記事を読み前に
記事の表示順をカスタムフィールドの値で制御する をご参照ください。
たとえば、投稿に紐づけるカスタムフィールド(型は「数値」)
・field_a
・field_b
を用意し、まず field_a の値の大きい順に並び、field_a の値が同じ場合は field_b の値の小さい順に並ぶような記事一覧を取得する場合。
以下に記事取得のところだけ記述します。
$the_query = new WP_Query(array(
'post_status' => 'publish',
'post_type' => 'post',
'posts_per_page' => -1,
'orderby' => array(
'condition_a' => 'DESC',
'condition_b' => 'ASC'
),
'meta_query' => array(
'relation' => 'AND',
'condition_a' => array(
'key' => 'field_a',
'type' => 'numeric',
),
'condition_b' => array(
'key' => 'field_b',
'type' => 'numeric',
),
),
));
meta_query のところでカスタムフィールドの条件に名前を付けて、orderby でその[条件名]と[降順昇順の指定]を配列にして並べる。このとき配列は優先したい条件のほうを前に記述すること。
これだけですって。
orderby って配列にできたんですね。私も最近まで知りませんでした(WordPress バージョン4以降かららしいです)。