Compatibilità con JetSmartFilters per Elementor
SearchWP funziona con i modelli di archivio di ricerca personalizzati di Elementor, ma JetSmartFilters sovrascrive i risultati di SearchWP dirottando le query di archivio.
Utilizzo di JetEngine Listing Grid
Per integrare i risultati di SearchWP quando si utilizza JetEngine Listing Grid per visualizzare i risultati, è possibile utilizzare questo hook:
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 ); |
Utilizzo dell'archivio Elementor Pro
Ci sono due opzioni se si riscontra questo problema. Se non si utilizzano JetSmartFilters in nessuna pagina di archivio, è possibile navigare nella seguente schermata del menu di amministrazione di WordPress: Elementor > Impostazioni JetSmartFilters e deselezionare questa casella:
Una volta deselezionata, è possibile fare clic sul pulsante Salva e il problema sarà risolto.
Se, tuttavia, si utilizzano JetSmartFilters in altre pagine di archivio, è possibile utilizzare invece questo snippet per disabilitare JetSmartFilters nelle pagine di archivio di ricerca, consentendo di utilizzare la personalizzazione del modello di archivio di ricerca di Elementor, utilizzando il widget Elementor Archive Posts per visualizzare i risultati della ricerca.
È una soluzione rapida; è possibile aggiungere questo snippet al file functions.php del tema (o a un plugin personalizzato creato) e consentirà la visualizzazione dei risultati di 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 ); |
Lo snippet sopra sfrutta le priorità di Jet Smart Filter sui suoi hook interni per impedirgli di sovrascrivere i risultati di SearchWP nelle pagine di archivio dei risultati di ricerca.


