SearchWP Documentation

Consultez le guide d’installation, parcourez la base de connaissances, découvrez les nombreux hooks de SearchWP

Afficher les sources personnalisées (par exemple, les utilisateurs) dans les résultats de recherche en direct

Par défaut, la recherche en direct utilisera votre moteur par défaut, qui est limité aux sources basées sur des objets WP_Post (par ex. Articles, Pages, Types d'articles personnalisés, etc.)

Nous pouvons utiliser le hook searchwp_live_search_get_search_form_engine pour utiliser un moteur supplémentaire pour les résultats de recherche en direct, mais de la même manière que nous devons utiliser un modèle de résultats personnalisé pour un moteur supplémentaire, nous devons utiliser un modèle de résultats personnalisé pour la recherche Ajax en direct si nous voulons afficher des résultats d'une source personnalisée.

La recherche Ajax en direct de SearchWP possède une structure de modèle que nous pouvons utiliser pour afficher nos résultats de source personnalisée.

Dans cet exemple, nous allons assembler un modèle de résultats de recherche Ajax en direct qui prend en compte les Utilisateurs de notre moteur supplémentaire :

Capture d'écran de la configuration du moteur

Sur ce site exemple, nous avons un utilisateur dont le nom d'utilisateur est « coffeefan » et le nom d'affichage est « Jane Doe » :

Capture d'écran des utilisateurs

Lorsque nous recherchons coffee à l'aide de la recherche Ajax en direct, notre modèle de résultats personnalisé inclura ce résultat et un autre article sur le café :

Résultat utilisateur

Pour implémenter ce modèle de résultats de recherche en direct personnalisé, nous pouvons créer un dossier searchwp-live-ajax-search dans le répertoire de notre thème, et à l'intérieur de ce dossier, créer un fichier search-results.php avec ce code :

<?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; ?>

Ce modèle de résultats peut être personnalisé comme vous le souhaitez, en affichant divers attributs de chaque type de résultat comme déterminé par l'instruction switch.

Créez dès aujourd'hui une meilleure expérience de recherche WordPress

Ne perdez plus jamais de visiteurs à cause de résultats de recherche inutiles. SearchWP rend la création de votre propre recherche WordPress intelligente rapide et facile.

Get SearchWP Now
Icône de moteurs de recherche multiples