SearchWP Dokumentation

Sehen Sie sich die Installationsanleitung an, durchsuchen Sie die Wissensdatenbank und erfahren Sie mehr über die vielen Hooks von SearchWP

Ergebnisse auf Beitragstyp beschränken (z. B. Beiträge, Seiten)

Standardmäßig gibt SearchWP Ergebnisse gemäß der Konfiguration der Engine zurück, die zur Durchführung der Suche verwendet wird. Es gibt Zeiten, in denen Sie ein Formular erstellen möchten, das es Besuchern ermöglicht, die Ergebnisse auf eine beliebige Anzahl von Quellen zu beschränken, die zur Engine hinzugefügt wurden. Sobald das Formular erstellt ist, können wir ein Mod verwenden, um die von der Engine zurückgegebenen Ergebnisse auf die durch das Formular angegebenen zu beschränken.

Die grundlegende Implementierung sieht wie folgt aus:

Alle Hooks sollten zu Ihrem benutzerdefinierten SearchWP Customizations Plugin hinzugefügt werden.

<?php
// Limit SearchWP results to Posts and Pages.
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
$mod = new \SearchWP\Mod();
$mod->set_where( [ [
'column' => 'source',
'value' => [
\SearchWP\Utils::get_post_type_source_name( 'post' ),
\SearchWP\Utils::get_post_type_source_name( 'page' )
],
'compare' => 'IN',
] ] );
$mods[] = $mod;
return $mods;
}, 10, 2 );

Hinweis: Dieser Ausschnitt veranschaulicht die Beschränkung der Ergebnisse auf Beiträge und Seiten, ohne die Formulareingabe zu berücksichtigen.

Wir können dieses Mod mit der Formulareingabe integrieren (vorausgesetzt, die $_GET-Variable hat den Namen sources) wie folgt:

Alle Hooks sollten zu Ihrem benutzerdefinierten SearchWP Customizations Plugin hinzugefügt werden.

<?php
// Limit SearchWP results to form field value.
// `sources` is a GET array of post type names.
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
if ( empty( $_GET['sources'] ) ) {
return $mods;
}
$mod = new \SearchWP\Mod();
$mod->set_where( [ [
'column' => 'source',
'value' => array_map( function( $source ) {
return \SearchWP\Utils::get_post_type_source_name( $source );
}, $_GET['sources'] ),
'compare' => 'IN',
] ] );
$mods[] = $mod;
return $mods;
}, 10, 2 );

Hinweis: Dieser Ausschnitt geht davon aus, dass Ihre Formularvariable als Kontrollkästchen eingerichtet wurde, die ein Array von Beitragstypnamen erstellen, und dass die Beitragstypnamen mit denen übereinstimmen, die zur verwendeten Engine hinzugefügt wurden, z. B.

<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">
<label>
<span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ) ?></span>
<input type="search" class="search-field"
placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>"
value="<?php echo get_search_query() ?>" name="s"
title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
</label>
<p>
<input type="checkbox" class="search-field" id="source-post"
value="post" name="sources[]" />
<label for="source-post">Posts</label>
</p>
<p>
<input type="checkbox" class="search-field" id="source-page"
value="post" name="sources[]" />
<label for="source-page">Pages</label>
</p>
<input type="submit" class="search-submit"
value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</form>
view raw tmp.html hosted with ❤ by GitHub

(Insbesondere Zeilen 9-18)

Erstellen Sie noch heute eine bessere WordPress-Sucherfahrung

Verlieren Sie nie wieder Besucher an unzureichende Suchergebnisse. SearchWP macht die Erstellung Ihrer eigenen intelligenten WordPress-Suche schnell und einfach.

Holen Sie sich jetzt SearchWP
Symbol für mehrere Suchmaschinen