Como Limitar Resultados de Busca para Tipos de Post Específicos no WordPress

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.

Aviso: Nosso conteúdo é apoiado pelos leitores. Isso significa que, se você clicar em alguns de nossos links, poderemos ganhar uma comissão. Veja como o WPBeginner é financiado, por que isso importa e como você pode nos apoiar. Aqui está nosso processo editorial.

O Kit de Ferramentas Definitivo para WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Interações do Leitor

26 CommentsLeave a Reply

  1. 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?

  2. 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....

  3. Olá,

    Como posso limitar os resultados da pesquisa para tipos de postagem específicos E termos de taxonomia personalizada específicos?

  4. 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’);

  5. 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’);

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

      • 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.

  6. 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.

  7. 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?

  8. 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 :)

  9. Há um problema com o seu trecho:

    Ele limita os resultados da busca no backend, você deveria envolvê-lo com:


    if ( !is_admin() ) {
    // snippet
    }

  10. 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?

Deixar uma resposta

Obrigado por escolher deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de comentários, e seu endereço de e-mail NÃO será publicado. Por favor, NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.