Hinzuf\"ugen einer Engine-Auswahl-Dropdownbox zum Suchformular
Eine der beliebtesten Funktionen von SearchWP ist die Möglichkeit, mehrere Suchmaschinen zu erstellen. Meistens führen mehrere Suchmaschinen zu mehreren Suchformularen, jedes mit seiner eigenen Vorlage für Suchergebnisse. Es ist auch möglich, stattdessen Ihr Standard-Suchformular und Ihre Standard-Ergebnisvorlage für jede Suchmaschine in SearchWP zu verwenden.
Dieser Artikel erklärt, wie Sie drei verschiedene Ansätze zum Hinzufügen einer Motoren-Dropdownliste zu Ihrem Suchformular umsetzen können.
- Erstellen Sie Ihr eigenes Suchformular mit einer Motoren-Dropdownliste
- Passen Sie die Shortcode-Erweiterung an, um eine Motoren-Dropdownliste einzuschließen
- Passen Sie das Standard-Suchformular an, um eine Motoren-Auswahl-Dropdownliste einzuschließen
Erstellen Ihres eigenen Suchformulars
Das Erstellen Ihres eigenen Suchformulars beinhaltet die Bearbeitung Ihrer Theme-Dateien, um die Eingabefelder und Schaltflächen einzufügen, die wir einschließen möchten. Auf der grundlegendsten Ebene können Sie Folgendes zu Ihrer Theme-Vorlagendatei hinzufügen, wo immer das Formular erscheinen soll:
| <!-- 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> |
Hinweis: „Standard“ wird für die Standard-Suchmaschine ausgegeben. Sie können dies anpassen, indem Sie Zeile 14 in diesem Ausschnitt bearbeiten.
Dieses Formular ist wie das Standard-WordPress-Suchformular strukturiert, enthält aber auch ein select-Element, das alle Ihre definierten SearchWP-Suchmaschinen enthält.
Sobald Ihr Formular eingerichtet ist, wird es zu Ihrer Standardvorlage für Suchergebnisse weitergeleitet. Wir müssen SearchWP jedoch auch mitteilen, welche Suchmaschine verwendet werden soll.
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; | |
| } ); | |
| } |
Dieser Ausschnitt ist ausschließlich dafür verantwortlich, zu prüfen, was aus der Motoren-Dropdownliste ausgewählt wurde, und diese Motorenkonfiguration für die Suche zu verwenden.
Verwenden Sie die Shortcode-Erweiterung von SearchWP
Die Shortcode-Erweiterung von SearchWP ermöglicht es Ihnen, Suchformulare einfach auszugeben und Seiten mit Suchergebnissen mithilfe von WordPress-Shortcodes zu steuern. Hier ist ein Beispiel für ein Suchformular, das eine Dropdown-Liste für Kategorien zur Auswahl enthält:
Hinweis: erfordert Shortcodes Version 1.2.1 oder höher
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' ); |
Dies passt das SearchWP-Shortcode-Formular an, um auch unsere Motoren-Dropdownliste einzuschließen. Dies behandelt jedoch nur die Dropdown-Liste. Wir müssen SearchWP immer noch mitteilen, welche Suchmaschine bei der Suche verwendet werden soll. Dies kann durch Hinzufügen des Folgenden zu Ihrem SearchWP Customizations-Plugin erfolgen (nicht zur Theme-Vorlagendatei, in der Sie den Formularcode hinzugefügt haben).
| <?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; | |
| } ); | |
| } |
Dieser Ausschnitt prüft die Suchanfrage, um zu sehen, welche Suchmaschine aus der Dropdown-Liste ausgewählt wurde, und verwendet sie für die aktuelle Suche.
Ändern Sie das Standard-Suchformular, um eine Motoren-Dropdownliste einzuschließen
WordPress ermöglicht es uns, das Standard-Suchformular zu filtern, das in vielen Themes zu finden ist. Es wird durch einen Aufruf von get_search_form() generiert, der entweder durch Einbeziehung einer Datei namens searchform.php in Ihrem Theme-Verzeichnis oder über den get_search_form-Filter vollständig angepasst werden kann. Für dieses Beispiel werden wir den get_search_form-Filter verwenden.
All hooks should be added to your custom SearchWP Customizations Plugin.
Um eine Motoren-Dropdownliste in das Standard-Suchformular Ihrer Website einzufügen, fügen Sie Folgendes zu Ihrem SearchWP Customizations-Plugin hinzu:
| <?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' ); |
Der hier verwendete Formularcode basiert auf dem Standard-Suchformular, das mit WordPress geliefert wird. Es besteht die Möglichkeit, dass Ihr Theme das Formular zuvor angepasst hat und Sie einfach die Dropdown-Liste hinzufügen möchten. Sie können den Formularcode einfach an den Ihres Themes anpassen und die Zeilen 11-22 aus diesem Codebeispiel dort einfügen, wo Ihre Engines-Dropdownliste erscheinen soll.
Dieser Ausschnitt modifiziert nur das Suchformular. Wir müssen immer noch den Wert aus der Dropdown-Liste erfassen und SearchWP anweisen, die ausgewählte Engine für die Suche zu verwenden. Dies können wir tun, indem wir Folgendes zu Ihrem SearchWP Customizations Plugin hinzufügen (nicht zur Theme-Template-Datei, in der Sie den Formularcode hinzugefügt haben).
| <?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; | |
| } ); | |
| } |

