Предотвратите 404 при использовании pre_get_posts для фильтрации страницы архива

Я добавил пользовательскую таксономию с названием «область» к типу post post post. Он предназначен для организации постов по географическим районам.

В категориях страниц я добавил раскрывающийся список, который позволяет фильтровать сообщения по областям. Я делаю это, добавляя параметр URL с именем « area-filter » в URL-адрес категории. Затем, используя фильтр pre_get_posts, я меняю запрос

add_action('pre_get_posts', 'gwmi_pre_get_posts'); /** * @param WP_query $query */ function gwmi_pre_get_posts( $query ) { if ($query->is_main_query() && !is_admin() && isset( $_GET['area-filter'] ) && is_numeric($_GET['area-filter']) && $_GET['area-filter']!= 0) { $queryArray = array('relation' => 'AND'); if (isset( $_GET['area-filter'] )) { $queryArray[] = array( 'taxonomy' => 'area', 'terms' => $_GET['area-filter'], 'operator' => 'IN' ); } $query->set('tax_query', $queryArray); } } 

Все работает на страницах категорий. Но если я попытаюсь сделать то же самое на архивных страницах, я получаю результат 404. Это ожидаемое поведение, так как WordPress не хочет индексировать пустые страницы архива. Тем не менее, мои пользователи достигают этой страницы с помощью фильтра, и я хочу, чтобы они оставались в шаблоне архива и просто отображали сообщение «Нет сообщений».

Есть ли способ достичь этого результата?