Не совсем понятно в какой именно момент вы хотите фильтровать записи
Если у вас дата заполнена в полях ACF и вы хотите сделать запрос из базы исходя из этого параметра, то для этого используется параметр
meta_key
запроса
wp_query()
$posts = get_posts( array(
'post_type' => 'event',
'meta_key' => 'date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
));
Если вы находитесь в шаблоне
archive.php или подобном, то вам надо провести фильтрацию глобального запроса на хуке
pre_get_posts
add_action( 'pre_get_posts', 'pre_get_events', 1 );
function pre_get_events( $query ) {
if ( $query->is_post_type_archive( 'event' ) ) {
$query->set( 'meta_key', 'date' );
$query->set( 'orderby', 'meta_value_num' );
}
}
Если же вам нужно сделать кастомную сортировку по двум и более параметрам, например, с помощью фронтенд формы, то без гет-параметров не обойтись. Возможны любые варианты:
- мойсайт.ру/2022/05/10/?tag=arbuz
- мойсайт.ру/tag/arbuz/?date=2022-05-10
С помощью
get_query_var()
проверяете наличие переменной и меняете основной запрос
add_action( 'pre_get_posts', 'custom_pre_get_posts', 1 );
function custom_pre_get_posts( $query ) {
if ( $tag = get_query_var( 'tag', false ) ) {
$query->set( 'tag', $tag );
}
}
Если вы переживаете, что дублируются заголовки, то можете тем же самым способом с помощью
get_query_var()
проверять наличие переменной и подменять заголовок с описанием