カスタムフィールドの値で公開日の並びにしたい
-
Wordpressでのサイトにて一覧ページのソート機能を作成しています。
どうしても反映できない部分があり質問させていただきました。実現したいこと
実現したい事は「開催が終了しました」となっている記事は後ろに回し、なおかつソート順は公開日を基準に順番にソートしたいです。
現在カスタムフィールドにて「test_end」を作成し、そこに「2022 01 01」のように日付を入力すれば、添付している画像のように、
入力している日付が過ぎれば「開催は終了しました」とマスクがかかるよう設定しています。しかし、ソートは投稿日順に表示をしているので画像1の赤いサムネイル部分のように、開催は終わっていますが投稿日が最近なので一覧の上位に来てしまっています。
今までは手動で公開日を修正して、開催が終っていたのものは一覧の後ろに回していましたが、自動で後ろに回るよう設定をしたいと思っています。添付させていただいたコードでカスタムフィールドを指定すると画像2のように開催が終了したものは自動的に後ろにソートされるのですが、画像2の公開日時の通り
“test_end”にてソートがかかっているので公開日が入れ違いになってしまっています。カスタムフィールドの値を取得して終了したものは一覧の後ろに回しつつ、一覧ページは投稿日が若い順に表示することは可能でしょうか。
画像1
https://d.kuku.lu/df78496c4
画像2
https://d.kuku.lu/25018925d下記試したコードになります。
function change_posts_per_page($query) { if( is_admin() || ! $query->is_main_query() ){ return; } if ( $query->is_post_type_archive( 'news' ) || $query->is_tax() ) { $query -> set('posts_per_page', '20' ); $query -> set('meta_key', 'test_end'); $query -> set('orderby', array('meta_value' => 'DESK','date' => 'DESK') ); return; } } add_action( 'pre_get_posts', 'change_posts_per_page' );
下記内容も試しましたが同様の結果でした。
$query -> set('orderby', array('meta_value' => 'ASC','date' => 'ASC') ); $query-> set('orderby', 'meta_value date'); $query-> set('order', 'DESC');
お詳しい方、アドバイスをいただけないでしょうか。
よろしくお願いいたします。
- トピック「カスタムフィールドの値で公開日の並びにしたい」には新たに返信することはできません。