Open3
WordPressで複数のカスタムフィールドでソートする
広告の掲載開始日・終了日でソートしたい場合
- 終了日が遅い順にソートする
- でも終了日が被ったときは開始日が早い順にする
といった、カスタムフィールドでのソート調整のコード。
function custom_pre_get_posts( WP_Query $query ): void {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
if ( $query->is_archive() ) {
$query->set(
'meta_query',
array(
'relation' => 'AND',
'end_date_clause' => array(
'key' => 'end_date',
'compare' => 'EXISTS',
'type' => 'DATE',
),
'start_date_clause' => array(
'key' => 'start_date',
'compare' => 'EXISTS',
'type' => 'DATE',
),
)
);
$query->set(
'orderby',
array(
'end_date_clause' => 'DESC',
'start_date_clause' => 'ASC',
)
);
}
}
add_action( 'pre_get_posts', 'custom_pre_get_posts' );