У материалов есть секция ACF с чекбоксами с возможностью выбора нескольких опций (сезонов), а также радио кнопки для выбора одной опции (направление и ценовая категория).
С фронта вывожу запросом материалы по заданным опциям, следующим образом
?direction=altai&season=leto&price=1
Но именно параметр season не отрабатывает, то есть не выводятся материалы с опцией leto. Хотя direction и price, которые в ACF реализованы через радио кнопки, отрабатывают четко. Это все при следующем коде:
function sm_register_query_vars( $vars ) {
$vars[] = 'direction';
$vars[] = 'season';
$vars[] = 'price';
return $vars;
}
add_filter( 'query_vars', 'sm_register_query_vars' );
function sm_pre_get_posts( $query ) {
if ( is_admin() || ! $query->is_main_query() ){
return;
}
if ( !is_post_type_archive( 'tours' ) ){
return;
}
$meta_query = array();
// add meta_query elements
if( !empty( get_query_var( 'direction' ) ) ){
$meta_query[] = array( 'key' => 'tour_direction', 'value' => get_query_var( 'direction' ), 'compare' => 'IN' );
}
if( !empty( get_query_var( 'season' ) ) ){
$meta_query[] = array( 'key' => 'tour_season', 'value' => get_query_var( 'season' ), 'compare' => 'IN' );
}
if( !empty( get_query_var( 'price' ) ) ){
$meta_query[] = array( 'key' => 'tour_price-category', 'value' => get_query_var( 'price' ), 'compare' => 'IN' );
}
if( count( $meta_query ) > 1 ){
$meta_query['relation'] = 'AND';
}
if( count( $meta_query ) > 0 ){
$query->set( 'meta_query', $meta_query );
}
}
add_action( 'pre_get_posts', 'sm_pre_get_posts', 1 );
Если у season ставлю compare LIKE, то следующее работает
?direction=altai&season=leto&price=1
Но если я ставлю несколько значений season то не выводится ничего вообще
?direction=altai&season=leto,zima&price=1
Уже несколько дней пытаюсь понять где я накосячил, но никак не разберусь.