SearchWP Documentation

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

Limitar resultados a Tipo de Entrada (p. ej., Entradas, Páginas)

Por defecto, SearchWP devolverá resultados según la configuración del Motor utilizado para realizar la búsqueda. Hay ocasiones en las que te gustaría crear un formulario que permita a los visitantes limitar los resultados a cualquier número de Fuentes añadidas al Motor. Una vez creado el formulario, podemos usar un Mod para limitar los resultados devueltos por el Motor a los especificados por el formulario.

La implementación básica se ve así:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Limit SearchWP results to Posts and Pages.
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
$mod = new \SearchWP\Mod();
$mod->set_where( [ [
'column' => 'source',
'value' => [
\SearchWP\Utils::get_post_type_source_name( 'post' ),
\SearchWP\Utils::get_post_type_source_name( 'page' )
],
'compare' => 'IN',
] ] );
$mods[] = $mod;
return $mods;
}, 10, 2 );

Nota: Este fragmento ilustra la limitación de resultados a Entradas y Páginas, sin tener en cuenta la entrada del formulario.

Podemos integrar este Mod con la entrada del formulario (suponiendo que la variable $_GET tenga el nombre sources) de la siguiente manera:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Limit SearchWP results to form field value.
// `sources` is a GET array of post type names.
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
if ( empty( $_GET['sources'] ) ) {
return $mods;
}
$mod = new \SearchWP\Mod();
$mod->set_where( [ [
'column' => 'source',
'value' => array_map( function( $source ) {
return \SearchWP\Utils::get_post_type_source_name( $source );
}, $_GET['sources'] ),
'compare' => 'IN',
] ] );
$mods[] = $mod;
return $mods;
}, 10, 2 );

Nota: Este fragmento asume que tu variable de formulario se ha configurado como casillas de verificación que crean una matriz de nombres de tipos de contenido, y que los nombres de los tipos de contenido coinciden con los que se han añadido al Motor en uso, p. ej.

<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">
<label>
<span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ) ?></span>
<input type="search" class="search-field"
placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>"
value="<?php echo get_search_query() ?>" name="s"
title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
</label>
<p>
<input type="checkbox" class="search-field" id="source-post"
value="post" name="sources[]" />
<label for="source-post">Posts</label>
</p>
<p>
<input type="checkbox" class="search-field" id="source-page"
value="post" name="sources[]" />
<label for="source-page">Pages</label>
</p>
<input type="submit" class="search-submit"
value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</form>
view raw tmp.html hosted with ❤ by GitHub

(Específicamente las líneas 9-18)

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