WordPress
カスタマイズ事例

WORDPRESS CUSTOMIZATION

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

記事の表示順をカスタムフィールドの値で制御する という事例で、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以降かららしいです)。

ご活用ください。

【100ウェブ新着情報メルマガ】

WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!