Loop unificado em temas

Arquivos: functions.php, single.php, style.css

Funções: get_the_category

O loop unificado é o que chamo de um único arquivo responsável por mostrar o conteúdo do site em diferentes contextos.

No fórum oficial as pessoas sempre perguntam sobre como modificar um ou outro aspecto de seus temas, o uso de temas filhos já é um bom começo, mas o que acontece quando o tema possui um arquivo single.php com apenas isso (tema TwentyTen):

<?php get_header(); ?>
 
		<div id="container">
			<div id="content" role="main">
 
			<?php get_template_part( 'loop', 'single' ); ?>
 
			</div><!-- #content -->
		</div><!-- #container -->
 
<?php get_sidebar(); ?>
<?php get_footer(); ?>
</div>

O TwentyTen, TwentyEleven e muitos outros temas usam loop unificado, isto é, o código para obter e mostrar conteúdo fica em um único arquivo, no caso loop.php, mas não é só isso: lá estão verificações para mostrar o conteúdo de maneira especial e também funções criadas para reduzir a repetição. O comentário no arquivo diz o seguinte

No TwentyTen, usamos o mesmo loop em diversos contextos e ele se divide em três blocos principais: quando estiver listando posts da galeria, posts do tipo notas e todos os outros posts.
Adicionalmente, às vezes também verificamos se é uma lista de posts em arquivo, resultados de procura etc, o que permite pequenas diferenças do loop em cada modelo, sem duplicar o restante do loop que é compartilhado.

Do ponto de vista do programador, faz mais sentido verificar tudo em um único arquivo do que criar um arquivo para cada contexto, mesmo que o WordPress permita isso, então é comum encontrar temas com poucos arquivos e mesmo assim um design diferenciado em cada contexto. O código fica ainda mais robusto se usar funções atreladas a contextos, por exemplo, uma função que mostra os metadados (data, autor, tags, categoria etc) de acordo com o contexto sem precisar listar as funções existentes ( the_author the_tags etc).

Modificando temas com loops unificados

Se seu tema possui um loop unificado (os temas bem escritos possuem sim!), o tema filho para modificá-lo pode ter o “pecado da repetição”.

Em um tema filho do Twenty Ten, para personalizar o contexto de postagem única, você pode criar o arquivo single.php com um loop, sem precisar criar um novo arquivo de loop unificado:

<?php get_header(); ?>
 
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
 
    	<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    	<h1 class="entry-title"><?php the_title(); ?></h1>
 
    	<div class="entry-content">
    	<?php the_content(); ?>
    	<?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
    	</div><!-- .entry-content -->
 
      <div id="postmeta">
          <ul>
        	<li><?php comments_popup_link( __( 'Comente este artigo', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></li>
 
        	<li><strong><?php the_title();?></strong> foi escrito por <?php the_author();?>, arquivado em <?php echo get_the_category_list( ', ' );?>
             <?php echo 'a ' .esc_attr( get_the_date() ).' &agrave;s '.esc_attr( get_the_time() ).'. ';?></li>
              <?php $tag_list = get_the_tag_list( '', ', ' );
              if ( $tag_list ) { echo  '<li>Tags do artigo: '.$tag_list.'</li>';};?>
 
          <li><?php previous_post_link( '%link', 'Artigo anterior: ' . _x( '', '', 'twentyten' ) . '%title',true ); ?></li>
          <li><?php next_post_link( '%link', 'Artigo seguinte: ' . _x( '', '', 'twentyten' ) . '%title' ,true); ?></li>
          <li><?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">[', ']</span>' ); ?></li>
          </ul>
 
      </div><!-- sobre o post -->
 
    	</div><!-- caixa do post -->
 
	 <?php comments_template( '', true ); ?><!-- comentarios -->
 
<?php endwhile; // fim do loop. ?>
 
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Isso só deve ser feito se precisa modificar apenas alguns contextos, do contrário você estará repetindo código como os temas antigos e assim estar sujeito a problemas como inconsistências e dificuldade em atualizar/modificar o tema, não exagere!

Se há a necessidade de uma modificação geral, crie o próprio loop.php, a dificuldade é maior mas em compensação seu tema não vai ficar cheio de arquivos inchados Criar um loop unificado tem a ver com PHP e condicionais do WordPress, todo XHTML e CSS fica praticamente fora disso.

Loop unificado em temas é um artigo sobre loop, temas loop, temas Códigos http://dianakcury.com/wp/codigos/loop-unificado-em-temas#respondDiana K. Cury http://dianakcury.com/wordpress/wp-content/themes/di3554/img/card.png

Deixe uma resposta

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