Como fazer a busca do WordPress retornar somente posts do blog

Por padrão, a pesquisa do WordPress retorna em seus resultados todas as páginas e postagens que contém a expressão solicitada pelo usuário. Em geral este ajuste é o mais adequado para a maioria das vezes, mas há situações que seria desejável exibir apenas as páginas ou os posts do blog nos resultados da busca.

Para isso, basta usar o filtro pre_get_posts por meio de uma pequena função no arquivo functions.php do teu tema ou em um plug-in específico. Vamos ver como fazer.

Mostrar só os posts

Para mostrar só os posts, a função define que o tipo de post (post type) a ser buscado pela consulta principal é “post”.

/* Se não é o painel administrativo, segue */
if (!is_admin()) { 
  function buscar_somente_posts($query) {
    /* Se a consulta é uma busca, então */
    if ($query->is_search) { 
      /* Limita o "post_type" a posts */
      $query->set('post_type', 'post'); 
    }
  return $query;
  }
  /* Adiciona a função ao filtro pre_get_posts */
  add_filter('pre_get_posts','buscar_somente_posts'); 
}

Mostrar só as páginas

O código é o mesmo, só trocamos o post_type para “page”.

/* Se não é o painel administrativo, segue */
if (!is_admin()) { 
  function buscar_somente_paginas($query) {
    /* Se a consulta é uma busca, então */
    if ($query->is_search) { 
      /* Limita o "post_type" a páginas */
      $query->set('post_type', 'page'); 
    }
  return $query;
  }
  /* Adiciona a função ao filtro pre_get_posts */
  add_filter('pre_get_posts','buscar_somente_paginas'); 
}

E outros tipos?

Bem, se tu prestaste atenção, te deste conta que é só trocar o post_type na consulta para filtrar por qualquer tipo personalizado de post que se queira, como por exemplo, “produtos”, “pessoas”, “endereços” e qualquer outro.

Conseguiste fazer o filtro que precisavas? Faz teu comentário e diz como foi tua experiência. Queres que eu escreva um artigo mais completo sobre isso? Deixa tua sugestão!

Um comentário em “Como fazer a busca do WordPress retornar somente posts do blog”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *