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!
Obrigado, deu super certo aqui!