SearchWP Documentation

Consulta la guía de instalación, explora la base de conocimiento, descubre los numerosos hooks de SearchWP

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:

Captura de pantalla de la configuración del motor

En este sitio de ejemplo, tenemos un Usuario con un nombre de usuario 'coffeefan' y un nombre para mostrar 'Jane Doe':

Captura de pantalla de Usuarios

Cuando buscamos coffee usando la Búsqueda Ajax en vivo, nuestra plantilla de resultados personalizada incluirá ese resultado y otra Entrada sobre café:

Resultado de usuario

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

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.

Cree hoy mismo una mejor experiencia de búsqueda en WordPress

No vuelva a perder visitantes por resultados de búsqueda inútiles. SearchWP facilita la creación de su propia búsqueda inteligente en WordPress.

Get SearchWP Now
Icono de múltiples motores de búsqueda