投稿記事は「書いた日付順に並ぶ」
そしてそれに不自由は感じないのが普通です。
でも時には別な方法で並べなければならない時だってあるんです。
今回はカスタムフィールドで投稿記事をソートする方法です。
もちろん!頭の良い人のコードを使わせてもらったわけなんですが
pre_get_postsで複数の並び替え条件を指定する(カスタムフィールドと日付)
なんか固定ページが全て404になってしまう事態発生。
試行錯誤で落ち着いたのは
1 2 3 4 5 6 7 8 9 |
function my_pre_get_posts( $query ) { if ( is_admin() || ! $query -> is_main_query() || is_page() ) return; if ( ! $query->is_home()) { //トップページ以外なら $query->set('meta_key', 'date'); //カスタムフィールドの名前 $query -> set('orderby', array('meta_value_num' => 'DESC', 'date' => 'DESC') ); //並び順を配列で指定 return; } } add_action( 'pre_get_posts', 'my_pre_get_posts' ); |
固定ページが404になってしまうので is_page() で回避してみました。