WordPress Search
Neste tutorial veremos como criar uma busca padrão do WordPress e manipular o resultado da pesquisa.
Primeiro vamos inserir nosso formulário de busca no arquivo ‘header.php’ usando o código abaixo no local onde se deseja o formulário de pesquisa.
<div id="header-form">
<?php get_search_form(); ?>
</div>
No código acima temos a chamada da função get_search_form() que conforme a documentação oficial não é necessário enviar nenhum parâmetro e traz como resultado o formulário padrão de busca que contém o seguinte código:
<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
<div><label class="screen-reader-text" for="s">Search for:</label>
<input type="text" value="" name="s" id="s" placeholder="<?php the_search_query(); ?>" />
<input type="submit" id="searchsubmit" value="Search" />
</div>
</form>
Para facilitar o entendimento, vamos trabalhar com este modelo padrão em nossos exemplos. Para personalizar o formulário acima, devemos criar um arquivo com nome ‘searchform.php’. Basta copiar o código acima e personalizar.
Agora que já temos nosso formulário de busca no lugar certo, devemos agora manipular o termo pesquisado e exibir o conteúdo para o visitante da página. Por padrão, o WordPress ao efetuar esta pesquisa, busca pelo arquivo ‘search.php’, caso ele não exista no seu tema, ele direciona a pesquisa para ‘index.php’. Abaixo, explicarei o conteúdo passo a passo que será usado no arquivo ‘search.php’ e em seguida disponibilizo o código completo:
Passo 1:
<?php get_header();
Neste primeiro trecho de código, inserimos o cabeçalho de nosso tema utilizando a função get_header().
Passo 2:
if (have_posts()) : ?> <h2>Resultados da busca por: <?php the_search_query(); ?></h2>
Neste trecho, avaliamos se existem posts com a função have_posts(), em seguida exibimos um texto com o conteúdo da pesquisa do visitante. A função the_search_query() retorna o termo pesquisado pelo visitante.
Passo 3:
<?php
while (have_posts()) : the_post(); ?>
<article class="post <?php if ( has_post_thumbnail() ) { ?>has-thumbnail <?php } ?>">
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
</div>
Agora, iniciamos o loop while com a condição de que, enquanto houver posts, exiba os posts. Dentro da tag article estou automatizando a inserção de uma classe has-thumbnail que será importante mais à frente na estilização do tema. Em seguida, utilizando a função the_permalink() crio o link para o post em volta da miniatura do post que é retornada pela função the_post_thumbnail(). Como pode-se observar, passei o parâmetro thumbnail para a função, que fará com que o WordPress retorne a miniatura de acordo com o tamanho desejado. Abaixo estão os tamanhos padrão suportados pelo WP.
//Default WordPressthe_post_thumbnail('thumbnail');// Thumbnail (150 x 150 cortada)the_post_thumbnail('medium');// Medium resolution (300 x 300 max height 300px)the_post_thumbnail('medium_large');// Medium Large (Adicionado no WP 4.4) resolução (768 x 0 height infinito)the_post_thumbnail('large');// Large resolution (1024 x 1024 max height 1024px)the_post_thumbnail('full');// Full resolution (original size uploaded)
Passo 4:
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> </article>
Aqui exibimos o título do post através da função the_title(), abaixo do título chamamos a função the_excerpt() que traz o resumo do post e em seguida fechamos a tag article que foi aberta no passo 3.
Passo 5:
<?php endwhile; else : echo '<p>Nenhum post encontrado</p>'; endif; get_footer(); ?>
Agora encerramos o while que havia iniciado no passo 3, iniciamos o else referente ao if do passo 2 que nos traz uma mensagem de que nenhum post foi encontrado. Utilizamos endif para encerrar o bloco if e fazemos a chamada da função get_footer() para renderizar na tela o footer de nosso tema.
Com estes passos, encerramos a construção de nosso arquivo ‘search.php’ que ficou assim:
<?php
get_header();
if (have_posts()) : ?>
<h2>Resultados da busca por: <?php the_search_query(); ?></h2>
<?php
while (have_posts()) : the_post(); ?>
<article class="post <?php if ( has_post_thumbnail() ) { ?>has-thumbnail <?php } ?>">
<!-- post-thumbnail -->
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
</div><!-- /post-thumbnail -->
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
</article>
<?php endwhile;
else :
echo '<p>Nenhum post encontrado</p>';
endif;
get_footer();
?>
Neste tutorial construímos um formulário para pesquisa no WP, manipulamos o termo pesquisado pelo visitante e criamos o template para exibição. Lembrando que aqui não tratamos de nenhuma forma de estilização via CSS que fica à cargo de cada um e na particularidade de seu layout e tema.
Todas as funções relevantes utilizadas no tutorial possuem link para documentação oficial caso queiram aprofundar em cada uma delas. Deixe seu comentário e compartilhe nas redes sociais.
Até a próxima!