Exibir Fontes Personalizadas (ex: Usuários) nos Resultados da Pesquisa ao Vivo
Por padrão, a Pesquisa ao Vivo utilizará seu Motor Padrão, que é limitado a Fontes baseadas em objetos WP_Post (ex: Posts, Páginas, Tipos de Postagem Personalizados, etc.)
Podemos usar o hook searchwp_live_search_get_search_form_engine para usar um Motor Suplementar para os resultados da Pesquisa ao Vivo, mas da mesma forma que precisamos usar um modelo de resultados personalizado para um Motor Suplementar, precisamos usar um modelo de resultados personalizado para a Pesquisa Ajax ao Vivo se quisermos exibir resultados de uma Fonte personalizada.
A Pesquisa Ajax ao Vivo do SearchWP possui uma estrutura de modelo que podemos utilizar para exibir os resultados de nossas Fontes personalizadas.
Neste exemplo, montaremos um modelo de resultados da Pesquisa Ajax ao Vivo que leva em consideração os Usuários de nosso Motor suplementar:
Neste site de exemplo, temos um Usuário com nome de usuário 'coffeefan' e nome de exibição 'Jane Doe':
Quando pesquisamos por coffee usando a Pesquisa Ajax ao Vivo, nosso modelo de resultados personalizado incluirá esse resultado e outro Post sobre café:
Para implementar este modelo personalizado de resultados da Pesquisa ao Vivo, podemos criar uma pasta searchwp-live-ajax-search no diretório do nosso tema e, dentro dessa pasta, criar um arquivo search-results.php com este código:
| <?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; ?> |
Este modelo de resultados pode ser personalizado como desejar, exibindo vários atributos de cada tipo de resultado conforme determinado pela instrução switch.




