• Nenhum resultado encontrado

O LOOP BÁSICO

No documento Smashing Wordpress - Além Do Blog (páginas 50-52)

É preciso compreender o loop para criar sites verdadeiramente bacanas com o WordPress. Por sorte, o loop básico é muito fácil. Ele começa assim:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

E termina assim:

<?php endwhile; else: ?>

<p>Alguma mensagem de erro ou algo do tipo.</p> <?php endif; ?>

Na verdade, você não precisa daquela parte que fala da mensagem de erro, exceto em arquivos de modelo que são usados para erros de saída, mas uma vez que muitos temas possuem a mensagem de erro, ela está incluída aqui. Pode ser um erro “404 page not found”, ou uma mensagem de resultado de busca dizendo que a busca do visitante não gerou nenhum resultado.

O loop a seguir é plenamente funcional, e contém as template tags mais comuns para a saída de conteúdo de postagens. Você encontrará este loop, ou alguma coisa muito semelhante a ele, no arquivo index.php da maioria dos temas:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

<h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php the_title(); ?> </a></h2> <?php the_content(); ?> <?php get_comments(); ?> </div> <?php endwhile; else: ?> <div class="post"> <h2>Error!</h2>

<p>Houve algum problema! Por favor, tente novamente.</p> </div>

<?php endif; ?>

Naturalmente, sua mensagem de erro deve ser mais específi ca do que a deste código, mas isso não importa no momento.

O loop básico verifi ca se há alguma postagem para retornar, e o loop, por sua vez, é controlado pelas confi gurações globais do blog (quantas postagens exibir, etc.), e pela localização no blog em que você está. Uma única postagem retornaria apenas uma postagem (o que você procura, presumivelmente), enquanto que uma listagem de categoria retornaria o número de postagens especifi cado nas confi gurações do WordPress, mas apenas as que pertencem àquela categoria específi ca.

Caso haja postagens, um ciclo de loop while é iniciado, e enquanto houver postagens para retornar, de acordo com o controle da situação e das confi gurações, as postagens serão retornadas e exibidas. Quando o loop while for concluído (todas as postagens que devem ser retornadas foram exibidas), ele termina com endwhile, e então o loop termina com endif. Caso não haja postagens que correspondam aos critérios da situação específi ca, a cláusula

else é chamada, e é nesse momento que a mensagem de erro (ou semelhante) será gerada (ou nada será gerado, caso não haja nada defi nido). Depois disso, o loop termina.

Assim, o loop na verdade cria um loop com o conteúdo do banco de dados, com base nas defi nições do WordPress e quaisquer critérios que a página em que você está possa trazer consigo. Faz sentido, não é mesmo?

SEPARANDO O LOOP USANDO O ARQUIVO DE MODELO LOOP.PHP

Houve um tempo em que o loop sempre estaria no arquivo de modelo do tema, index.php, e possivelmente também em vários outros arquivos de modelo. Hoje, nem todos os temas incluem o loop em index.php. Na verdade, recomendo que você não inclua o loop em seu arquivo index.php e, em vez disso, use a include tag get_template_part() (mencionada no Capítulo 2), juntamente com um arquivo de modelo separado para o loop. Na verdade, embora alguns arquivos de modelo contenham o loop e não dependam de get_template_

part() para a inclusão do loop, outros usarão loop.php, mas renderizarão o conteúdo de maneira diferente dependendo da parte do site que está sendo exibida. Um arquivo de

categorias muitas vezes tem aparência diferente de uma única postagem, mas ambos poderiam ser gerados pelo mesmo arquivo de modelo loop.php (embora não pelo mesmo código dentro desse modelo loop.php), ou a partir de arquivos completamente diferentes. É tudo uma questão de onde você está, no site, e de quantos arquivos de modelo possui em seu tema. Lembre-se de que, conforme mencionado no Capítulo 2, a template tag get_template_

part() irá incluir o arquivo de modelo loop.php, que é, obviamente, onde você colocaria o loop. Assim, o exemplo de código de loop na seção anterior não poderia ser encontrado em index. php. Ao invés disso, você teria o seguinte:

<?php get_template_part('loop', 'index'); ?>

Isso buscará primeiramente loop-index.php e, caso esse arquivo não fosse encontrado, reverteria para loop.php. Você colocaria seu código de loop em qualquer um desses arquivos. O objetivo de usar loop-index.php (nesse caso) seria permitir que você controlasse o loop em uma página específi ca (index.php, nesse caso), mantendo o loop geral (encontrado em loop.php, o arquivo para qual o WordPress reverte) livre de personalizações para páginas específi cas. Assim, se você quiser usar um loop completamente diferente para seus arquivos de categoria, por exemplo, usaria a seguinte linha em category.php, o arquivo de modelo usado em nosso exemplo:

<?php get_template_part('loop', 'category); ?>

Isso buscaria primeiramente loop-category.php, onde você irá colocar o seu loop personalizado, mantendo, dessa forma, o arquivo loop.php limpo e econômico. Você vai colocar isso em prática com temas fi lhos no Capítulo 5. Por enquanto, você pode se contentar em saber que essa é uma ótima maneira de separar o código de loop, que pode ser bastante extenso, a partir de diferentes arquivos de modelo.

No documento Smashing Wordpress - Além Do Blog (páginas 50-52)