Você já se perguntou como pode limitar seus resultados de pesquisa a tipos de postagem específicos? Não é muito difícil. Já mostramos como desativar o recurso de pesquisa no WordPress modificando o arquivo functions.php. Agora faremos a mesma coisa, exceto para filtrar nossos resultados de pesquisa.
Abra seu arquivo functions.php e adicione os seguintes códigos:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('post','page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
Observe a linha que diz
$query->set('post_type',array('post','page'));
Você pode filtrar os resultados da pesquisa alterando os valores na variável de array. Atualmente, está configurado para exibir posts e páginas, mas você pode modificá-lo para exibir o que quiser.

Ankit manandgar
como posso obter resultados de pesquisa apenas pelo título da postagem?
Anna
Obrigado por este código – funcionou, embora você tenha atualizado pela última vez em 2013! Meu tema também usa Pesquisa Instantânea e eu gostaria de limitar os resultados lá também. Como eu poderia fazer isso?
Sparsh Goyal
Meu tema atual mostra posts com algumas linhas iniciais para o termo/palavra pesquisada. Quero personalizá-lo para mostrar o parágrafo que contém o termo/palavra pesquisada no trecho da postagem. Em outras palavras, quero mostrar o texto relacionado no trecho da postagem, não o parágrafo inicial nos resultados da pesquisa. Alguém pode me ajudar com isso....
Azamat
Olá,
Como posso limitar os resultados da pesquisa para tipos de postagem específicos E termos de taxonomia personalizada específicos?
Steven
Tenho uma função simples no arquivo functions.php do meu tema, que deve filtrar apenas os Posts por um termo de pesquisa… quando pesquiso algo agora, aparece o Erro HTTP 500 “O site não pode exibir a página”. Alguém tem uma ideia do que está errado com minha função?
function searchFilter($query) { if ($query->is_search) { wp_reset_query(); $args = array ( ‘s’ => $_GET[‘s’] ); query_posts( $args ); } } add_filter(‘pre_get_posts’, ‘searchFilter’);
Greg
Isso está restringindo todos os formulários de busca ao tipo de postagem personalizado – incluindo meu formulário de busca na barra lateral, que precisa retornar todos os resultados. Isso está funcionando para mim:
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $type = $_GET[‘post_type’]; if($type == ‘book’) { $query->set(‘post_type’,array(‘book’)); } } } return $query; } add_filter(‘pre_get_posts’,’searchfilter’);
Jonathan Joosten
Obrigado pela ajuda, melhorei seu código para que as pessoas possam pesquisar apenas os tipos de postagem permitidos.
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $types = (array) $_GET[‘post_type’]; $allowed_types = get_post_types(array(‘public’ => true, ‘exclude_from_search’ => false)); foreach($types as $type) { if( in_array( $type, $allowed_types ) ) { $filter_type[] = $type; } } if(count($filter_type)) { $query->set(‘post_type’,$filter_type); } } } } add_filter(‘pre_get_posts’,’searchfilter’);
Dan Sz.
Como isso é implementado? Se eu estiver lendo o comentário de Greg corretamente, queremos um único formulário que seja limitado a um tipo de postagem, mantendo a busca padrão intacta para outras áreas do site.
Estou perguntando porque um site em que estou trabalhando precisa de uma "Biblioteca de Recursos" pesquisável, que eu gostaria de construir sem comprometer a funcionalidade de busca normal.
Tadeu
Olá, é possível limitar a busca apenas ao título, categoria e tags das postagens?
Sandeep
Olá,
Não consigo restringir páginas no filtro de pesquisa.
Eu só preciso da pesquisa dentro das postagens e não das páginas.
$query->set(‘post_type’,array(‘post’));
Isso exibe páginas também.
Jared
Apenas uma observação para adicionar a isso, você não precisa retornar $query.
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Peter
Obrigado pela ótima dica!
Equipe WPBeginner
Nick A funcionalidade de busca do WordPress não é tão boa para encontrar conteúdo.
Nick
Usei este código para restringir meus resultados de busca a Páginas, não Posts. Funcionou nesse sentido, no entanto, parece que ele busca apenas os nomes das Páginas em vez do conteúdo. Por exemplo, se um usuário pesquisar por “preços”, a página Preços será um resultado, mas se ele pesquisar por “valor” ou “custo” (ambas palavras que estão na página de preços), nada é encontrado. Existe um trecho de código que estou perdendo?
emre
Hi,
I have a question and I couldn’t get a solution since last month.
I have lost of categories, pages and re-directions in my blog so my search box finds many unnecessary results when you try to search something. I want to customize my search.php for only categories part. In other words, we you search something, the results should be only from categories sections. So I will be get rid of redundant & duplicated results. My current codes are as below…Please help me
sam
Como limitar por categoria específica? obrigado
WPBeginner Support
Sam, por favor, veja nosso guia sobre como adicionar filtro de busca por taxonomia no WordPress.
Admin
Hasan Gad Allah
Thank you , i was looking for that code (Y)
Felix
Há um problema com o seu trecho:
Ele limita os resultados da busca no backend, você deveria envolvê-lo com:
if ( !is_admin() ) {
// snippet
}
bloggingfuture
Este é um código bastante valioso para o WordPress. Obrigado!
Alan Hughes
Então, como você aplicaria isso a uma barra de pesquisa específica? Não se aplica o filtro a todas as barras de pesquisa do seu site, certo?
goJohnnyGo
Você já descobriu como aplicar isso a barras de pesquisa específicas (não universalmente)?
Equipe Editorial
Sim, temos um artigo aqui:
https://www.wpbeginner.com/wp-tutorials/how-to-create-advanced-search-form-in-wordpress-for-custom-post-types/
Admin
scotte_sprott
Como posso limitar os resultados da pesquisa para mostrar apenas páginas?
wpbeginner
@scotte_sprott No array, mantenha apenas 'page' e remova 'posts'.