この実装、面倒なら代行します
記事の表示順をカスタムフィールドの値で制御する という事例で、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カスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。