Kompatibilit\"at mit JetSmartFilters f\"ur Elementor
SearchWP funktioniert mit benutzerdefinierten Sucharchivvorlagen von Elementor, aber JetSmartFilters überschreibt die Ergebnisse von SearchWP, indem es Archivabfragen abfängt.
Verwendung des JetEngine Listing Grid
Um die Ergebnisse von SearchWP bei Verwendung eines JetEngine Listing Grid zur Anzeige von Ergebnissen zu integrieren, können Sie diesen Hook verwenden:
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Integrate SearchWP with JetSmartFilters search using | |
| // JetEngine Listing Grid to display results. | |
| // @link https://searchwp.com/documentation/knowledge-base/compatibility-with-jetsmartfilters-for-elementor/ | |
| add_action( 'pre_get_posts', function( $wp_query ) { | |
| if ( | |
| ! isset( $wp_query->query['jet_smart_filters' ] ) | |
| || empty( $wp_query->query['s'] ) | |
| ) { | |
| return; | |
| } | |
| $swp_query = new \SWP_Query( array( | |
| 'engine' => 'default', | |
| 's' => $wp_query->query['s'], | |
| 'fields' => 'ids', | |
| 'nopaging' => true | |
| ) ); | |
| $results = ! empty( $swp_query->posts ) ? $swp_query->posts : array( 0 ); | |
| $wp_query->set( 'post__in', $results ); | |
| $wp_query->set( 'post_type', 'any' ); | |
| $wp_query->set( 'post_status', 'any' ); | |
| $wp_query->set( 'orderby', 'post__in' ); | |
| $wp_query->set( 'order', 'DESC' ); | |
| $wp_query->set( 's', false ); | |
| }, 9999 ); |
Verwendung von Elementor Pro Archiv
Wenn Sie auf dieses Problem stoßen, gibt es zwei Möglichkeiten. Wenn Sie JetSmartFilters nicht auf Archivseiten verwenden, können Sie zum folgenden Bildschirm im WordPress-Admin-Menü navigieren: Elementor > JetSmartFilters Einstellungen und dieses Kontrollkästchen deaktivieren:
Sobald dies deaktiviert ist, können Sie auf die Schaltfläche Speichern klicken und das Problem ist behoben.
Wenn Sie JetSmartFilters jedoch auf anderen Archivseiten verwenden, können Sie stattdessen diesen Codeausschnitt verwenden, um JetSmartFilters auf Sucharchivseiten zu deaktivieren. Dadurch können Sie die Anpassung der Sucharchivvorlage von Elementor verwenden und das Elementor Archive Posts Widget zur Anzeige der Suchergebnisse nutzen.
Es ist eine schnelle Lösung. Sie können diesen Codeausschnitt zur functions.php-Datei Ihres Themes (oder einem von Ihnen erstellten benutzerdefinierten Plugin) hinzufügen, und er ermöglicht die Anzeige der Ergebnisse von SearchWP:
| <?php | |
| // Prevents JetSmartFilters from overriding SearchWP's results. | |
| // @link https://searchwp.com/documentation/knowledge-base/compatibility-with-jetsmartfilters-for-elementor/ | |
| add_action( 'init', function() { | |
| add_filter( 'elementor/theme/posts_archive/query_posts/query_vars', function( $query ) { | |
| if ( is_search() && is_main_query() ) { | |
| remove_all_filters( 'elementor/theme/posts_archive/query_posts/query_vars' ); | |
| } | |
| return $query; | |
| }, -1 ); | |
| }, -998 ); |
Der obige Codeausschnitt nutzt die Prioritäten der internen Hooks von Jet Smart Filter, um zu verhindern, dass diese die Ergebnisse von SearchWP auf Suchergebnisarchivseiten überschreiben.


