Visualizza Origini Personalizzate (es. Utenti) nei Risultati della Ricerca Live
Per impostazione predefinita, la Ricerca Live utilizzerà il tuo Motore Predefinito, limitato a Fonti basate su oggetti WP_Post (es. Articoli, Pagine, Tipi di Post Personalizzati, ecc.)
Possiamo usare l'hook searchwp_live_search_get_search_form_engine per usare un Motore Supplementare per i risultati della Ricerca Live, ma nello stesso modo in cui abbiamo bisogno di usare un template personalizzato per i risultati di un Motore Supplementare, abbiamo bisogno di usare un template personalizzato per i risultati della Ricerca Ajax Live se vogliamo mostrare risultati da una Fonte personalizzata.
La Ricerca Ajax Live di SearchWP ha una struttura del template che possiamo utilizzare per visualizzare i risultati delle nostre Fonti personalizzate.
In questo esempio creeremo un template per i risultati della Ricerca Ajax Live che tiene conto degli Utenti dal nostro Motore supplementare:
In questo sito di esempio abbiamo un Utente con nome utente 'coffeefan' e nome visualizzato 'Jane Doe':
Quando cerchiamo coffee usando la Ricerca Ajax Live, il nostro template personalizzato per i risultati includerà quel risultato e un altro Articolo sul caffè:
Per implementare questo template personalizzato per i risultati della Ricerca Live, possiamo creare una cartella searchwp-live-ajax-search nella directory del nostro tema, e all'interno di quella cartella creare un file search-results.php con questo codice:
| <?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 ); ?> » | |
| </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 ); ?> » | |
| </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; ?> |
Questo template per i risultati può essere personalizzato come desideri, visualizzando vari attributi di ciascun tipo di risultato come determinato dall'istruzione switch.




