Mostrar Fuentes Personalizadas (p. ej., Usuarios) en Resultados de Búsqueda en Vivo
Por defecto, la Búsqueda en vivo utilizará tu Motor predeterminado, que se limita a los orígenes basados en objetos WP_Post (p. ej., Entradas, Páginas, Tipos de contenido personalizado, etc.)
Podemos usar el hook searchwp_live_search_get_search_form_engine para usar un Motor suplementario para los resultados de la Búsqueda en vivo, pero de la misma manera que necesitamos usar una plantilla de resultados personalizada para un Motor suplementario, necesitamos usar una plantilla de resultados personalizada para la Búsqueda Ajax en vivo si queremos mostrar resultados de un origen personalizado.
La Búsqueda Ajax en vivo de SearchWP tiene una estructura de plantilla que podemos utilizar para mostrar los resultados de nuestro origen personalizado.
En este ejemplo, crearemos una plantilla de resultados de Búsqueda Ajax en vivo que tenga en cuenta los Usuarios de nuestro Motor suplementario:
En este sitio de ejemplo, tenemos un Usuario con un nombre de usuario 'coffeefan' y un nombre para mostrar 'Jane Doe':
Cuando buscamos coffee usando la Búsqueda Ajax en vivo, nuestra plantilla de resultados personalizada incluirá ese resultado y otra Entrada sobre café:
Para implementar esta plantilla de resultados personalizada de Búsqueda en vivo, podemos crear una carpeta searchwp-live-ajax-search en el directorio de nuestro tema y, dentro de esa carpeta, crear un archivo search-results.php con 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; ?> |
Esta plantilla de resultados se puede personalizar como desees, mostrando varios atributos de cada tipo de resultado según lo determine la declaración switch.




