WordPress|カスタムフィールドと投稿日時でソートする方法/get_posts()とメインループ

WordPress|カスタムフィールドと投稿日時でソートする方法/get_posts()とメインループ

新着記事の並び順をカスタムフィールドの日付とワードプレスの投稿日時の2つの条件で対応したかった時に結構ハマったのでメモ。

get_posts()メインループでの書き方っす!

アバター
ME

複数のカスタムフィールドにある日付での並び順は、ググるとでてくるんだけど…
カスタムフィールド日付&ワードプレス投稿日時だと全然でてこなくて困ったです。
最終的には海外サイトを参照しますた。

並び順の条件

▼第1条件

カスタムフィールドにある日付順にソート

▼第2条件

上記、カスタムフィールドが同じ日付の場合は投稿日時を参照してソート

 

get_posts()の記述方法

アバター
ME

1行目でどのカスタムフィールドを参照するのかを指定。
3行目、4行目で並び順を指定。
3行目、4行目を入れ替えると条件も変えられるみたい♪

 

get_posts()のサンプルコード

▼条件

・公開済みの記事
・新着10件表示
・投稿タイプは「投稿(post)」
・並び順の第1条件→カスタムフィールドにある日付
・並び順の第2条件→カスタムフィールドの日付が同じだったら投稿日時を参照

 

メインループのサンプルコード

アバター
ME

メインループの場合はfunctions.phpに記述します。

 

6行目のis_archive()を変更することで、検索結果ページやポストアーカイブへ対応させることも出来ます。
is_archive()は、カテゴリ一覧ページやタグ一覧ページが対応されることとなります。

条件分岐については↓↓を参照
https://wpdocs.osdn.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0