SearchWP Documentation

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

Benutzerdefinierte Quellen (z. B. Benutzer) in Live-Suchergebnissen anzeigen

Standardmäßig verwendet die Live-Suche Ihre Standard-Engine, die auf Quellen beschränkt ist, die auf WP_Post-Objekten basieren (z. B. Beiträge, Seiten, benutzerdefinierte Beitragstypen usw.).

Wir können den Hook searchwp_live_search_get_search_form_engine verwenden, um eine ergänzende Engine für Live-Suchergebnisse zu nutzen. Aber genauso wie wir eine benutzerdefinierte Ergebnissvorlage für eine ergänzende Engine benötigen, benötigen wir eine benutzerdefinierte Ergebnissvorlage für die Live-Ajax-Suche, wenn wir Ergebnisse aus einer benutzerdefinierten Quelle anzeigen möchten.

SearchWP Live Ajax Search verfügt über eine Vorlagenstruktur, die wir nutzen können, um unsere benutzerdefinierten Quellenergebnisse auszugeben.

In diesem Beispiel erstellen wir eine Live-Ajax-Suchergebnisvorlage, die Benutzer aus unserer supplemental-Engine berücksichtigt:

Screenshot der Engine-Konfiguration

Auf dieser Beispiel-Website haben wir einen Benutzer mit dem Benutzernamen „coffeefan“ und dem Anzeigenamen „Jane Doe“:

Screenshot der Benutzer

Wenn wir mit der Live-Ajax-Suche nach coffee suchen, enthält unsere benutzerdefinierte Ergebnissvorlage dieses Ergebnis und einen weiteren Beitrag über Kaffee:

Benutzerergebnis

Um diese benutzerdefinierte Live-Suchergebnisvorlage zu implementieren, können wir einen Ordner searchwp-live-ajax-search in unserem Theme-Verzeichnis erstellen und in diesem Ordner eine Datei search-results.php mit diesem Code erstellen:

<?php
// Execute a search using our supplemental SearchWP Engine.
// @link https://searchwp.com/documentation/knowledge-base/custom-source-results-live-search/
$search_query = isset( $_REQUEST['s'] ) ? sanitize_text_field( $_REQUEST['s'] ) : null;
$search_results = [];
if ( ! empty( $search_query ) && class_exists( '\\SearchWP\\Query' ) ) {
$searchwp_query = new \SearchWP\Query( $search_query, [
'engine' => 'supplemental', // The Engine name.
'fields' => 'all', // Load proper native objects of each result.
] );
$search_results = $searchwp_query->get_results();
}
?>
<?php if ( ! empty( $search_query ) && ! empty( $search_results ) ) : ?>
<?php foreach ( $search_results as $search_result ) : ?>
<?php
switch( get_class( $search_result ) ) {
case 'WP_Post':
?>
<div class="searchwp-live-search-result" role="option" id="" aria-selected="false">
<p><a href="<?php echo esc_url( get_permalink( $search_result->ID ) ); ?>">
<?php echo get_the_title( $search_result->ID ); ?> &raquo;
</a></p>
</div>
<?php
break;
case 'WP_User':
?>
<div class="searchwp-live-search-result" role="option" id="" aria-selected="false">
<p><a href="<?php echo get_author_posts_url( $search_result->data->ID ); ?>">
<?php echo esc_html( $search_result->data->display_name ); ?> &raquo;
</a></p>
</div>
<?php
break;
}
?>
<?php endforeach; ?>
<?php else : ?>
<p class="searchwp-live-search-no-results" role="option">
<em><?php esc_html_e( 'No results found.', 'swplas' ); ?></em>
</p>
<?php endif; ?>

Diese Ergebnissvorlage kann beliebig angepasst werden, wobei verschiedene Attribute jedes Ergebnistyps ausgegeben werden, wie durch die switch-Anweisung bestimmt.

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.

Get SearchWP Now
Symbol für mehrere Suchmaschinen