Os resultados da pesquisa do WordPress incluem correspondências de todos os tipos de posts, personalizados ou não.
Às vezes, quando instalamos um plugin novo, ou mesmo quando utilizamos um Theme, tipos de posts customizados podem ser criados para utilização interna do próprio tema ou plugin.
Assim, qualquer conteúdo correspondente encontrado nas postagens, no fórum, páginas ou qualquer outro tipo de post será incluído nos resultados da pesquisa. Esse comportamento padrão pode ser super conveniente, mas nem sempre é desejável. Imagine, por exemplo, que os seus arquivos de Footer acabam por aparecerem nos resultados das pesquisas?!!
Neste tutorial rápido, você verá como excluir tipos de postagem personalizados dos resultados de pesquisa do WordPress.
Excluindo tipos de postagem personalizados dos resultados da pesquisa
Então, digamos que temos dois tipos de postagem personalizados, “book” e “movie“. Queremos excluir o tipo de postagem do tipo movie dos resultados da pesquisa. Para isso, adicionamos o seguinte código ao arquivo functions.php do tema:
function shapeSpace_filter_search($query) {
if (!$query->is_admin && $query->is_search) {
$query->set('post_type', array('post', 'page', 'book'));
}
return $query;
}
add_filter('pre_get_posts', 'shapeSpace_filter_search');
Este código verifica se a Query é uma consulta de pesquisa e não uma consulta de administrador. Nesse caso, ele usa o método set() da classe WP_Query para definir o valor do parâmetro post_type. Como queremos excluir o tipo de postagem movie da consulta de pesquisa, nós o excluímos da matriz. Fácil assim:
$query->set('post_type', array('post', 'page', 'book'));
Como você pode ver, aqui especificamos que o tipo de postagem ( post_type ) usado para as consultas de pesquisa interna do WP será todos as publicações do tipo POST, PAGE ou BOOK. Assim, o tipo de postagem movie é excluído dos resultados da pesquisa.
Obviamente, existem muitas maneiras de personalizar esse snippet, fazer coisas como permitir outros tipos de posts, excluir tipos de posts atuais e até usar outros parâmetros da WP_Query para modificar outros aspectos da consulta. Essa é a beleza da classe WP_Query do WordPress – ela permite um ótimo controle sobre praticamente todos os aspectos da consulta.
Gostou desta dica? Compartilha! 😉
Fonte: Matheus Venâncio