Como excluir as páginas do resultado de busca ?
Publicado em 09/02/2010 às 09h31 por Guga AlvesUma maneira de se excluir as páginas do resultado de busca é usar o plugin Simply-Exclude plugin.
Entretanto, como sou adepto da filosofia “Quanto menos plugins melhor”, outra solução interessante é adicionar um filtro no functions.php que adicione na busca apenas as categorias desejadas, excluindo assim todo o restante:
// Remove pages from search
function mySearchPostsFilter($query)
{
if ($query->is_search)
{
$query->set(‘cat’,’12,14,16,17,18′); // your category IDs
}
return $query;
}
add_filter(‘pre_get_posts’,'mySearchPostsFilter’);
Só lembre de substituir os IDs das categorias, em $query->set(‘cat,’‘12,14,16,17,18′) pelos IDs correspondentes as categorias de seu blog, ok ? Estes números são apenas exemplos.
Update: uma forma mais simples: $query->set(‘post_type’, ‘post’); Com isso você deixará claro que apenas postagens devem ser exibidas na busca, excluindo as páginas e eliminando a necessidade de colocar os ids de cada categoria do blog.
Dica retirada do site Web-Kreation




5 pessoas comentaram o artigo
Muitooooo legal essa dica! Eu que o diga, ne! hahaha
Uma coisa bem legal que descobri tb é que, ao invés de vc setar os IDs das categorias, vc pode definir que apareçam somente posts assim:
$query->set('post_type', 'post');
Dae não precisa ficar pondo número de categoria lá toda hora q vc quiser excluir uma nova! =D
Esse código está incorreto amigo, ele não exlclui essas páginas, ele busca apenas nelas.
Ele não exclui as páginas, mas faz com que a busca seja feita apenas nas categorias.. alguma diferença nisso meu amigo ?
muito bom o código, obrigado
Colocando query_posts('post_type', 'post'); antes do loop no arquivo search.php também da certo, se no caso a ideia for exibir apenas os posts.