
記事の表示順をカスタムフィールドの値で制御する という事例で、1つのカスタムフィールドの値の大小を条件にして記事一覧をソートする方法についてご紹介しました。
今回はソートを複数のカスタムフィールドで制御したい場合についてのご紹介です。
たとえば、投稿に紐づけるカスタムフィールド(型は「数値」)
・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以降かららしいです)。
ご活用ください。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!