Ajouter une boîte déroulante de sélection de moteur à la barre de recherche
L'une des fonctionnalités les plus populaires de SearchWP est la possibilité de créer plusieurs moteurs de recherche. Le plus souvent, plusieurs moteurs entraînent plusieurs formulaires de recherche, chacun avec son propre modèle de résultats de recherche. Il est également possible d'utiliser votre formulaire de recherche et votre modèle de résultats par défaut pour n'importe quel moteur de recherche dans SearchWP.
Cet article expliquera comment vous pouvez réaliser trois approches différentes pour ajouter une liste déroulante de moteurs à votre formulaire de recherche.
- Créez votre propre formulaire de recherche avec une liste déroulante de moteurs
- Personnalisez l'extension de shortcodes pour inclure une liste déroulante de moteurs
- Personnalisez le formulaire de recherche par défaut pour inclure une liste déroulante de sélection de moteurs
Créer votre propre formulaire de recherche
La création de votre propre formulaire de recherche implique la modification des fichiers de votre thème pour inclure les champs de saisie et les boutons que nous voulons inclure. Au niveau le plus élémentaire, vous pouvez ajouter ce qui suit au fichier de modèle de votre thème où vous souhaitez que le formulaire apparaisse :
| <!-- https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/ --> | |
| <form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>"> | |
| <label> | |
| <span class="screen-reader-text">Search for:</span> | |
| <input type="search" class="search-field" placeholder="Search..." value="<?php echo esc_attr( get_search_query() ); ?>" name="s" title="Search for:" /> | |
| </label> | |
| <?php | |
| $engines = \SearchWP\Settings::get_engines(); | |
| $current_engine = isset( $_GET['swpengine'] ) ? esc_attr( $_GET['swpengine'] ) : 'default'; | |
| ?> | |
| <select name="swpengine" id="swpengine"> | |
| <?php foreach ( $engines as $engine_name => $engine ) : ?> | |
| <option value="<?php echo esc_attr( $engine_name ); ?>" | |
| <?php selected( $current_engine, $engine_name ); ?>> | |
| <?php echo esc_html( $engine->get_label() ); ?> | |
| </option> | |
| <?php endforeach; ?> | |
| </select> | |
| <input type="submit" class="search-submit" value="Search" /> | |
| </form> |
Remarque : « Par défaut » est généré pour le moteur par défaut, vous pouvez le personnaliser en modifiant la ligne 14 de cet extrait.
Ce formulaire est structuré comme le formulaire de recherche WordPress par défaut, mais il inclut également une balise select contenant tous vos moteurs SearchWP définis.
Une fois votre formulaire configuré, il redirigera vers votre modèle de résultats de recherche par défaut, mais nous devons également indiquer à SearchWP quel moteur utiliser pour la recherche.
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/ | |
| if ( ! empty( $_GET['swpengine'] ) ) { | |
| add_filter( 'searchwp\query\args', function( $args ) { | |
| $args['engine'] = $_GET['swpengine']; | |
| return $args; | |
| } ); | |
| } |
Cet extrait est uniquement responsable de la vérification de ce qui a été choisi dans la liste déroulante des moteurs, et de l'utilisation de cette configuration de moteur pour la recherche.
Utilisez l'extension de shortcodes de SearchWP
L' extension de shortcodes de SearchWP vous permet de générer facilement des formulaires de recherche et de contrôler les pages de résultats de recherche à l'aide de shortcodes WordPress. Voici un exemple de formulaire de recherche qui inclut une liste déroulante de catégories parmi lesquelles choisir :
Remarque : nécessite la version 1.2.1 ou supérieure de Shortcodes
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/ | |
| // ***** UNCOMMENT THIS IF YOU WANT TO USE SHORTCODES IN WIDGETS | |
| // add_filter( 'widget_text', 'do_shortcode' ); | |
| // Output a SearchWP Engines dropdown | |
| function my_searchwp_shortcodes_inject_engines() { ?> | |
| <p class="searchwp-shortcodes-engines"> | |
| <?php | |
| $engines = \SearchWP\Settings::get_engines(); | |
| $current_engine = isset( $_GET['swpengine'] ) ? esc_attr( $_GET['swpengine'] ) : 'default'; | |
| ?> | |
| <select name="swpengine" id="swpengine"> | |
| <?php foreach ( $engines as $engine_name => $engine ) : ?> | |
| <option value="<?php echo esc_attr( $engine_name ); ?>" | |
| <?php selected( $current_engine, $engine_name ); ?>> | |
| <?php echo esc_html( $engine->get_label() ); ?> | |
| </option> | |
| <?php endforeach; ?> | |
| </select> | |
| </p><?php | |
| } | |
| add_action( 'searchwp_shortcodes_after_input', 'my_searchwp_shortcodes_inject_engines' ); |
Cela personnalisera le formulaire de shortcodes SearchWP pour inclure également notre liste déroulante de moteurs. Cela ne gère que la liste déroulante, cependant. Nous devons toujours indiquer à SearchWP quel moteur utiliser lors de l'exécution d'une recherche. Cela peut être fait en ajoutant ce qui suit à votre plugin de personnalisations SearchWP (pas au fichier de modèle de thème où vous avez ajouté le code du formulaire).
| <?php | |
| // @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/ | |
| if ( ! empty( $_GET['swpengine'] ) ) { | |
| add_filter( 'searchwp\query\args', function( $args ) { | |
| $args['engine'] = $_GET['swpengine']; | |
| return $args; | |
| } ); | |
| } |
Cet extrait vérifiera la requête de recherche pour voir quel moteur a été choisi dans la liste déroulante et l'utilisera pour la recherche actuelle.
Modifiez le formulaire de recherche par défaut pour inclure une liste déroulante de moteurs
WordPress nous permet de filtrer le formulaire de recherche par défaut trouvé dans de nombreux thèmes. Il est généré par un appel à get_search_form() qui peut être entièrement personnalisé soit en incluant un fichier nommé searchform.php dans votre répertoire de thème, soit via le filtre get_search_form. Pour cet exemple, nous utiliserons le filtre get_search_form.
All hooks should be added to your custom SearchWP Customizations Plugin.
Pour inclure une liste déroulante de moteurs dans le formulaire de recherche par défaut de votre site, ajoutez ce qui suit à votre plugin de personnalisations SearchWP :
| <?php | |
| // Adds a SearchWP Engines dropdown to the search form | |
| // @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/ | |
| function my_searchwp_get_search_form_with_engines_dropdown( $form ) { | |
| ob_start(); ?> | |
| <form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>"> | |
| <label> | |
| <span class="screen-reader-text">Search For</span> | |
| <input type="search" class="search-field" placeholder="Search..." value="<?php echo esc_attr( get_search_query() ); ?>" name="s" title="Search for:" /> | |
| </label> | |
| <?php | |
| $engines = \SearchWP\Settings::get_engines(); | |
| $current_engine = isset( $_GET['swpengine'] ) ? esc_attr( $_GET['swpengine'] ) : 'default'; | |
| ?> | |
| <select name="swpengine" id="swpengine"> | |
| <?php foreach ( $engines as $engine_name => $engine ) : ?> | |
| <option value="<?php echo esc_attr( $engine_name ); ?>" | |
| <?php selected( $current_engine, $engine_name ); ?>> | |
| <?php echo esc_html( $engine->get_label() ); ?> | |
| </option> | |
| <?php endforeach; ?> | |
| </select> | |
| <input type="submit" class="search-submit" value="Search" /> | |
| </form> | |
| <?php return ob_get_clean(); | |
| } | |
| add_filter( 'get_search_form', 'my_searchwp_get_search_form_with_engines_dropdown' ); |
Le code du formulaire utilisé ici est basé sur le formulaire de recherche par défaut fourni avec WordPress. Il est possible que votre thème ait précédemment personnalisé le formulaire et que vous souhaitiez simplement y ajouter la liste déroulante. Vous pouvez simplement modifier le code du formulaire pour qu'il corresponde à celui fourni avec votre thème et ajouter les lignes 11-22 de cet exemple de code là où vous souhaitez que votre liste déroulante Moteurs apparaisse.
Cet extrait ne modifie que le formulaire de recherche, nous devons toujours capturer la valeur de la liste déroulante et indiquer à SearchWP d'utiliser le Moteur choisi pour la recherche. Nous pouvons le faire en ajoutant ce qui suit à votre plugin de personnalisations SearchWP (pas au fichier de modèle de thème où vous avez ajouté le code du formulaire).
| <?php | |
| // @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/ | |
| if ( ! empty( $_GET['swpengine'] ) ) { | |
| add_filter( 'searchwp\query\args', function( $args ) { | |
| $args['engine'] = $_GET['swpengine']; | |
| return $args; | |
| } ); | |
| } |

