Campo de busca no wordpress

A ferramenta de busca em sites do WordPress é algo muito útil para encontrar um conteúdo que contenha uma ou mais palavras. É um recurso amplamente aplicado e que deve ser mais utilizado pelo usuário quando se quer ganhar tempo. Investigando os arquivos do WP, é possível ver a seguinte função relacionada à busca:

<?php get_search_form(); ?>

(Para entender essa função, prepare-se para um momento matryoshka, aquela boneca russa constituída por uma série de bonecas que são colocadas umas dentro das outras, da maior até a menor)

Primeiramente, essa função tenta localizar o arquivo searchform.php no tema filho e no tema pai; se não encontrar, ele carrega o formulário padrão de busca. Conforme sua documentação, a função está no arquivo “wp-includes/general-template.php” e pode ser vista também no link.

A busca padrão é realizada através de um formulário HTML, onde no campo “value” da tag “input” será chamada a função “get_search_query()”. Ela recupera o conteúdo da execução de uma busca, de acordo com a documentação. A string de consulta de pesquisa é passada através da função “esc_attr()” para garantir que é segura para sua utilização em um atributo html.

Ainda nessa função, é aplicada a rotina “apply_filters( ‘get_search_query’, get_query_var( ‘s’ ) )”, onde o primeiro argumento indica o que deve ser feito e o segundo chama a função “get_query_var”. Por sua vez, ela recupera a variável de consulta pública na classe WP_Query do objeto global $wp_query, localizada em “wp-includes/query.php”.

Finalmente, havendo uma string com os termos de busca, é montada uma query para busca no banco de dados do WordPress. Na linha 2204 do arquivo query.php (veja o código clicando no link), é possível notar que a busca é realizada usando LIKE nos campos de título e de conteúdo dos posts.

O envio das palavras a serem buscadas é realizado via método GET do HTML. A busca é apresentada na barra de endereços após o domínio, separado por barra, formado de interrogação seguida da letra s (de “search”) e um sinal de igual, seguido dos termos de busca:

http://DOMINIO/?s=TERMOS DE BUSCA

Se o navegador permitir HTML5, a busca padrão permite digitar os termos de busca apenas clicando em “TAB” após escrever o domínio do site na barra de endereços, em vez de clicar “ENTER” para entrar no site – somente clique “ENTER” após escrever os termos de busca.

A página “search.php” é responsável por imprimir os resultados da busca ou mostrar uma mensagem dizendo que não retornou resultado, oferecendo novamente o campo de buscas para uma nova consulta.

Incluindo campo de busca

Na atualização do tema Twenty Twelve para a versão 1.5, houve uma alteração na linha que contém o menu de categorias no topo do site (fonte: wordpress.org support). Caso tenha um tema filho, a linha que contém a tag h3 deve ser alterada para button no arquivo “header.php”, ficando assim:

<button class="menu-toggle"><?php _e( 'Menu', 'twentytwelve' ); ?></button>

A classe “menu-toggle” está na folha de estilo do twenty-twelve. Para mudar o estilo do menu que aparece, insira linhas no arquivo styles.css como no exemplo a seguir:

[code lang=”css”][inline]
.main-navigation ul.nav-menu.toggled-on li a {
padding-left:0.5cm;
color: #FFFFFF;
text-decoration:none;
}

A função “_e()” retorna o texto (informado entre aspas simples como o primeiro argumento) traduzido conforme o tema, definido como o segundo argumento da função. Ou seja, server simplesmente para imprimir o nome “menu”.

Voltando à questão do campo de busca, se trocar a linha toda pela tag php contendo “get_search_form()”, o campo de busca vai aparecer em todas as resoluções. Caso queira que o campo de busca apareça somente para resoluções de celular (largura menor ou igual a 600px), substitua somente a tag php pela nova. Além do campo de buscar aparecer, a gambiarra permite que o menu categorias continue aparecendo abaixo, dando mais uma opção de encontrar o conteúdo desejado.

É possível mudar a forma que a busca é realizada editando o filtro “posts_search” no arquivo “wp-includes/query.php”. Outras formas de customizar o campo de buscas podem ser vistas no link.

Leave a Reply

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.