SearchWP Documentation

Veja o guia de instalação, navegue pela Base de Conhecimento, descubra os muitos hooks do SearchWP

Limitar resultados ao Tipo de Post (ex: Posts, Páginas)

Por padrão, o SearchWP retornará resultados de acordo com a configuração do Motor usado para realizar a busca. Há momentos em que você gostaria de criar um formulário que permita aos visitantes limitar os resultados a qualquer número de Fontes adicionadas ao Motor. Uma vez que o formulário é criado, podemos usar um Mod para limitar os resultados retornados pelo Motor àqueles especificados pelo formulário.

A implementação básica se parece com isto:

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

Observação: Este trecho ilustra a limitação de resultados para Posts e Páginas, sem levar em consideração a entrada do formulário.

Podemos integrar este Mod com a entrada do formulário (assumindo que a variável $_GET tenha o nome sources) assim:

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

Observação: Este trecho assume que sua variável de formulário foi configurada como caixas de seleção que criam um array de nomes de tipos de post, e que os nomes dos tipos de post correspondem aos que foram adicionados ao Motor em uso, por exemplo.

<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

(Especificamente as linhas 9-18)

Crie uma Experiência de Pesquisa WordPress Melhor Hoje

Nunca mais perca visitantes para resultados de pesquisa inúteis. O SearchWP torna a criação de sua própria pesquisa inteligente do WordPress rápida e fácil.

Get SearchWP Now
Ícone de Múltiplos Mecanismos de Busca