No CanalWP nós buscamos trazer dicas, códigos e ferramentas úteis para que os usuários WordPress consigam explorar e usufruir de todas possibilidades do sistema.
Sendo assim, nós já te mostramos como ter a sua própria loja virtual e também, a criar tipos de post customizados – veja o post Como Instalar e Configurar o WooCommerce no WordPress e também Como Utilizar Campos Personalizados (Custom Fields) No WooCommerce.
E o assunto de hoje é justamente para quem trabalha com WordPress e faz uso de tipos de post customizados para criar soluções focadas em um determinado problema, seja de seu próprio negócio ou de seus clientes.
Logo, se um site utiliza custom post type – esta é a nomenclatura padrão dos tipos de posts customizados – nada mais justo do que aprender a criar queries WordPress para realizar buscas apenas dentro de posts de um tipo X especificado.
Limitar Busca por Tipo de Post
No post Como Criar um Tipo de Post Personalizado Sem Plugin ensinei como criar um tipo de post customizado, onde o cenário apresentado como exemplo didático foi o de cadastro de clientes – detalhe, você pode aplicar a solução de criar tipo de post personalizado para os mais diversos cenários e necessidades.
Escolher um cenário para testar códigos e funcionalidades do WordPress, como por exemplo, um sistema para locadora de automóveis é excelente para aprender mais sobre o assunto.
Assim, para o tutorial que te apresento hoje, nós vamos mudar o cenário de exemplo, trabalhando com a ideia de tipo de post personalizado para “Livros” – onde previamente precisa ser criado esse custom post type e cadastrado através da Dashboard.
O Problema
Após o tipo de post “livro” ter sido criado – conforme ensinei no link que está no início desse tópico, a ideia é que os visitantes que acessarem nosso site realizem buscas por livros, digitando o seu título e irão receber os resultados respectivos a essa busca.
Entretanto, se no nosso site também existe um blog com posts, no momento em que o visitante realizar uma busca, os resultados apresentados serão referentes aos posts padrão do blog e não ao nosso custom post type “livro”. E não é isso que o nosso visitante deseja. Não é mesmo?!
Assim, precisamos configurar a querie de busca do site para retornar apenas os resultados referentes ao tipo de post customizado “livro”.
Vamos ao Código!
Para conseguirmos restringir ou limitar os resultados da busca por tipo de post personalizado (custom post type), precisaremos editar o arquivo functions.php do Tema ativo em nosso site.
Você pode editar o functions.php diretamente da sua Dashboard, caso o seu Tema permita que isso seja realizado, ou com o uso de um programa para edição de código de sua preferência.
Há quem opte por baixar tal arquivo através de acesso FTP, editar e depois das alterações realizadas, fazer o upload do mesmo substituindo o antigo – veja Como Usar FTP para Transferir e Modificar Arquivos no WordPress. Escolha a maneira que mais te agradar.
Já com o arquivo functions.php aberto e pronto para ser editado, copie e cole o seguinte bloco de código após a última linha de código:
add_filter('pre_get_posts','searchfilter'); function searchfilter($query) { if ($query->is_search) { $query->set('post_type',array('livro')); } return $query; }
Entender o código é essencial para que você possa aprender mais sobre PHP e WordPress. Sendo assim, perceba que a primeira linha do nosso bloco de código PHP é adicionado um filtro (add_filter) que chama a função que logo mais abaixo é criada e configurada.
A function searchfilter() é literalmente a nossa função responsável por limitar a busca por tipo de post. Dentro dela nós passamos qual ou quais tipos de post devem ser exibidos no resultado da busca, quando o usuário realizar uma pesquisa em nosso site.
Logo, nós setamos a query da busca, para que o post_type faça pesquisas apenas para o tipo de post customizado ‘livro’.
Se no seu sistema existem outros tipos de post e você quer incluir aqui, você precisa separar cada um com vírgula, ficando assim:
set('post_type',array('livro','tipo_post_2','tipo_post_3'));
Para manter os posts do blog aparecendo no resultado junto com seus custom post types, basta incluir o tipo ‘post’ na lista, conforme acabei de exemplificar aqui.
Lembre-se que, estamos configurando como a busca geral do site irá funcionar, então se você adicionar mais do que um tipo de post, os resultados exibidos para a pesquisa serão para todos aqueles setados.
Salve o arquivo functions.php e atualize a página do seu site. Depois, simule uma busca e verifique o novo comportamento da busca, que agora deve exibir os tipos de post customizados que você especificou.
Conclusão
Trabalhar com tipo de post customizado é ótimo para tornar o trabalho com WordPress muito mais completo e fiel à necessidade de solucionar um ou mais problemas de uma empresa.
A solução que trouxe hoje é especialmente para sites que não desejam buscas para posts do tipo padrão, mas sim buscas para um custom post type personalizado e criado por você. Te mostrei também como você pode adicionar mais de um tipo de post para a função que fará as pesquisas.
Assim o bloco de código PHP que vimos pode ser editado facilmente por você, para que se enquadre da melhor maneira ao seu site.
Para quem deseja ter mais de uma busca em seu site ou loja, adicionando como widget diferentes formulários de busca para diversos post customizados que possua em seu sistema WordPress, indico conferir o post Saiba Como Exibir Pesquisas com Filtro no WordPress.
E se você ainda não está muito familiarizado com a ideia de tipos de post personalizados, taxonomias e ainda custom fields – recomendo de forma veemente que você não deixe de conferir o Tutorial Completo WordPress Advanced Custom Fields e Gerencie Taxonomias e Custom Post com o Plugin Types.
Esses são posts onde falo mais sobre o assunto e indico ferramentas para auxiliar na criação e gerenciamento de soluções personalizadas.
Se você gostou desse artigo considere compartilhar nas redes sociais. Siga-nos nas redes sociais para acompanhar mais artigos como esse. Se de alguma forma este artigo lhe foi útil deixa seu comentário abaixo para podermos saber a sua opinião.
Ferramentas WordPress Veja Mais Ferramentas
Ninja Forms
Regenerate Thumbnail
Akismet
Jovem, veja se pode me ajudar. Baixei o Woocommerce no meu Tema e ele alterou a barra de busca que fica fixa ao lado da logo lá no alto, agora quando digito lá nessa caixa para buscar algum artigo no meu blog ele não acha, ele só serve para buscar produtos. Contudo tive que adicionar uma caixa na barra lateral com outro campo de pesquisa universal.
Gostaria de saber como faço para “desbloquear” essa caixa de pesquisa adicionada pelo Woocommerce que só busca por produtos.
Muito boa a dica. Ele realmente localiza somente o post personalizado, mas quando clico para abrir o post ele não o encontra. Não sei onde está o erro.