Verhindere 404, wenn pre_get_posts verwendet wird, um eine Archivseite zu filtern

Ich habe eine benutzerdefinierte Taxonomie namens “Bereich” zum Post-Post-Standardtyp hinzugefügt. Es ist geplant, Beiträge nach geografischen Gebieten zu organisieren.

In Kategorieseiten habe ich ein Drop-down-Menü hinzugefügt, mit dem der Benutzer die Beiträge nach Bereich filtern kann. Dazu füge ich einen URL-Parameter namens ” area-filter ” zur URL der Kategorie hinzu. Dann benutze ich den pre_get_posts Filter und ändere die Abfrage

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); } } 

Alles funktioniert gut auf Kategorieseiten. Aber wenn ich versuche, dasselbe auf Archivseiten zu machen, bekomme ich ein 404-Ergebnis. Dies ist ein erwartetes Verhalten, da WordPress nicht möchte, dass leere Archivseiten indiziert werden. Meine Benutzer erreichen diese Seite jedoch über den Filter und ich möchte, dass sie in der Archivvorlage bleiben und ihnen nur die Meldung “Keine Posts gefunden” anzeigen.

Gibt es einen Weg, wie ich dieses Ergebnis erreichen kann?

Solutions Collecting From Web of "Verhindere 404, wenn pre_get_posts verwendet wird, um eine Archivseite zu filtern"