Compatibilité avec JetSmartFilters pour Elementor
SearchWP fonctionne avec les modèles d’archives de recherche personnalisés d’Elementor, mais JetSmartFilters remplace les résultats de SearchWP en détournant les requêtes d’archives.
Utilisation de JetEngine Listing Grid
Pour intégrer les résultats de SearchWP lors de l’utilisation d’une JetEngine Listing Grid pour afficher les résultats, vous pouvez utiliser ce 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 ); |
Utilisation d’une archive Elementor Pro
Il existe deux options si vous rencontrez ce problème. Si vous n’utilisez pas JetSmartFilters sur des pages d’archives, vous pouvez accéder à l’écran de menu suivant dans l’administration WordPress : Elementor > JetSmartFilters Settings et décocher cette case :
Une fois décochée, vous pouvez cliquer sur le bouton Enregistrer et le problème sera résolu.
Si, cependant, vous utilisez JetSmartFilters sur d’autres pages d’archives, vous pouvez utiliser cet extrait de code pour désactiver JetSmartFilters sur les pages d’archives de recherche, vous permettant ainsi d’utiliser la personnalisation du modèle d’archive de recherche d’Elementor, en utilisant le widget Elementor Archive Posts pour afficher les résultats de recherche.
C’est une solution rapide ; vous pouvez ajouter cet extrait de code au fichier functions.php de votre thème (ou à un plugin personnalisé que vous avez créé) et cela permettra d’afficher les résultats de 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 ); |
L’extrait de code ci-dessus tire parti des priorités de Jet Smart Filter sur ses hooks internes pour l’empêcher de remplacer les résultats de SearchWP sur les pages d’archives des résultats de recherche.


