Há algum tempo que desejávamos iniciar esta série de artigos, a partir da qual esperamos ajudá-lo a aprender como criar um template WordPress. Esta série irá analisar passo-a-passo todas as diferentes fases do desenvolvimento de um template para WordPress, e para que você consiga analisar e implementar todas elas, decidimos partir esta ideia em vários artigos mais simples de assimilar e explorar. No final da série, certamente conseguirá criar seu template WordPress!

Os templates wordpress são hoje em dia cada vez mais procurados e podem ser facilmente criados com o intuito de serem vendidos em mercados como a Theme Forest ou a Mojo Themes. Qualquer pessoa que deseje entrar neste mundo fascinante do desenvolvimento de templates para wordpress, pode posteriormente comercializá-los nesses mercados e começar a ganhar dinheiro produzindo templates de qualidade.

Se não deseja perder pitada desta nova série sobre Como criar um Template WordPress, considere assinar a nossa newsletter e receber todos os próximos artigos por email e comodamente. É grátis!

Endereço de Email:

Vejamos algumas das competências do template que vamos desenvolver ao longo dos próximos artigos:

  • Otimização para motores de busca
  • Marcação com suporte Microformato da Google
  • Semântica da estrutura de marcação válida e lógica que pode ser usada em qualquer template
  • Layouts de CSS inteligentes
  • Classes dinâmicas para o corpo, postagens e comentários
  • Trackbacks e comentários em árvore separados
  • 2 áreas para widgets que desaparecem quando não estão ocupadas
  • Tudo o resto que é normal num template WordPress

No final desta série de tutoriais, com o código feito e pronto a ser implementado, você poderá fazer praticamente tudo aquilo que desejar com ele. Você pode inclusive olhar para o resultado final como a sua framework WordPress de trabalho.

CONSTRUINDO O FICHEIRO DE ARQUIVO, AUTOR, CATEGORIA E TAG

Tal como fizemos com o ficheiro index.php, vamos aproveitar o novo template dos templates e usá-lo para construir os templates que nos faltam, nomeadamente o template de arquivo, autor, categoria e tag. O nosso template mestre neste caso será o template de Arquivo.

O que o ficheiro archive.php faz (e todos os seus templates relacionados) é mostrar artigos baseados num determinado critério. Um intervalo de datas, postagens por autor, uma categoria, ou uma tag. Portanto, basicamente, é muito parecido com o ficheiro index.php. Vamos então começar novamente com o nosso template dos templates (pode ir buscá-lo a nosso artigo da parte 6) que construímos num das lições anteriores e começar a trabalhar em cima dele.

      <?php get_header(); ?>

        <div id="container">
         <div id="content">

          <div id="nav-above" class="navigation">
          </div><!– #nav-above –>

          <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
          </div><!– #post-<?php the_ID(); ?> –>  

          <div id="nav-below" class="navigation">
          </div><!– #nav-below –>    

         </div><!– #content –>
        </div><!– #container –>

      <?php get_sidebar(); ?>
      <?php get_footer(); ?>

O TEMPLATE DE ARQUIVO

Eis o esquema de um template de arquivo:

  • Chamar a função the_post()
  • Verificar que tipo de template é este
  • Produzir um template apropriado
  • Rebobinar as postagens com a função rewind_posts()
  • Correr o clico normal do WordPress

Eis então o conteúdo (#content) do seu ficheiro archive.php. Tome nota de que as Tags Condicionais que se encontram no topo, servem para verificar que tipo de template estamos a usar.

      <?php the_post(); ?>  

      <?php if ( is_day() ) : ?>
          <h1 class="page-title"><?php printf( __( 'Daily Archives: <span>%s</span>', 'seu-template' ), get_the_time(get_option('date_format')) ) ?></h1>
      <?php elseif ( is_month() ) : ?>
          <h1 class="page-title"><?php printf( __( 'Monthly Archives: <span>%s</span>', 'seu-template' ), get_the_time('F Y') ) ?></h1>
      <?php elseif ( is_year() ) : ?>
          <h1 class="page-title"><?php printf( __( 'Yearly Archives: <span>%s</span>', 'seu-template' ), get_the_time('Y') ) ?></h1>
      <?php elseif ( isset($_GET['paged']) && !empty($_GET['paged']) ) : ?>
          <h1 class="page-title"><?php _e( 'Blog Archives', 'seu-template' ) ?></h1>
      <?php endif; ?>

      <?php rewind_posts(); ?>

      <?php global $wp_query; $total_pages = $wp_query->max_num_pages; if ( $total_pages > 1 ) { ?>
          <div id="nav-above" class="navigation">
           <div class="nav-previous"><?php next_posts_link(__( '<span class="meta-nav">«</span> Older posts', 'seu-template' )) ?></div>
           <div class="nav-next"><?php previous_posts_link(__( 'Newer posts <span class="meta-nav">»</span>', 'seu-template' )) ?></div>
          </div><!– #nav-above –>
      <?php } ?>  

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

          <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
           <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( __('Permalink to %s', 'seu-template'), the_title_attribute('echo=0') ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

           <div class="entry-meta">
            <span class="meta-prep meta-prep-author"><?php _e('By ', 'seu-template'); ?></span>
            <span class="author vcard"><a class="url fn n" href="<?php echo get_author_link( false, $authordata->ID, $authordata->user_nicename ); ?>" title="<?php printf( __( 'View all posts by %s', 'seu-template' ), $authordata->display_name ); ?>"><?php the_author(); ?></a></span>
            <span class="meta-sep"> | </span>
            <span class="meta-prep meta-prep-entry-date"><?php _e('Published ', 'seu-template'); ?></span>
            <span class="entry-date"><abbr class="published" title="<?php the_time('Y-m-d\TH:i:sO') ?>"><?php the_time( get_option( 'date_format' ) ); ?></abbr></span>
            <?php edit_post_link( __( 'Edit', 'seu-template' ), "<span class=\"meta-sep\">|</span>\n\t\t\t\t\t\t<span class=\"edit-link\">", "</span>\n\t\t\t\t\t" ) ?>
           </div><!– .entry-meta –>

           <div class="entry-summary">
      <?php the_excerpt( __( 'Continue reading <span class="meta-nav">»</span>', 'seu-template' )  ); ?>
           </div><!– .entry-summary –>

           <div class="entry-utility">
            <span class="cat-links"><span class="entry-utility-prep entry-utility-prep-cat-links"><?php _e( 'Posted in ', 'seu-template' ); ?></span><?php echo get_the_category_list(', '); ?></span>
            <span class="meta-sep"> | </span>
            <?php the_tags( '<span class="tag-links"><span class="entry-utility-prep entry-utility-prep-tag-links">' . __('Tagged ', 'seu-template' ) . '</span>', ", ", "</span>\n\t\t\t\t\t\t<span class=\"meta-sep\">|</span>\n" ) ?>
            <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'seu-template' ), __( '1 Comment', 'seu-template' ), __( '% Comments', 'seu-template' ) ) ?></span>
            <?php edit_post_link( __( 'Edit', 'seu-template' ), "<span class=\"meta-sep\">|</span>\n\t\t\t\t\t\t<span class=\"edit-link\">", "</span>\n\t\t\t\t\t\n" ) ?>
           </div><!– #entry-utility –>
          </div><!– #post-<?php the_ID(); ?> –>

      <?php endwhile; ?>  

      <?php global $wp_query; $total_pages = $wp_query->max_num_pages; if ( $total_pages > 1 ) { ?>
          <div id="nav-below" class="navigation">
           <div class="nav-previous"><?php next_posts_link(__( '<span class="meta-nav">«</span> Older posts', 'seu-template' )) ?></div>
           <div class="nav-next"><?php previous_posts_link(__( 'Newer posts <span class="meta-nav">»</span>', 'seu-template' )) ?></div>
          </div><!– #nav-below –>
      <?php } ?>

O TEMPLATE DE AUTOR

O seu template de autor não será muito diferente. Você certamente vai gostar deste. Copie o código do ficheiro archive.php e atribua-lhe o nome author.php. A única coisa que necessita trocar é o título da secção.

<h1 class="page-title author"><?php printf( __( 'Author Archives: <span class="vcard">%s</span>', 'seu-template' ), "<a class='url fn n' href='$authordata->user_url' title='$authordata->display_name' rel='me'>$authordata->display_name</a>" ) ?></h1>
    <?php $authordesc = $authordata->user_description; if ( !empty($authordesc) ) echo apply_filters( 'archive_meta', '<div class="archive-meta">' . $authordesc . '</div>' ); ?>

Simples, hein?

O TEMPLATE DE CATEGORIA

O template de categoria é outro template que pode ser criado facilmente a partir do template de arquivo. Copie o código do ficheiro archive.php e atribua-lhe o nome category.php.

Agora abra o ficheiro functions.php. Iremos introduzir uma função customizada que irá tornar o nosso template de categoria mais simples de usar.

      // Retorna outras categorias excepto a atual (redundante)
      function cats_meow($glue) {
       $current_cat = single_cat_title( '', false );
       $separator = "\n";
       $cats = explode( $separator, get_the_category_list($separator) );
       foreach ( $cats as $i => $str ) {
        if ( strstr( $str, ">$current_cat<" ) ) {
         unset($cats[$i]);
         break;
        }
       }
       if ( empty($cats) )
        return false;

       return trim(join( $glue, $cats ));
      } // end cats_meow

A nossa função customizada cats_meow() remove a categoria corrente das páginas de categorias. Por outras palavras, ela simplesmente livra-se de categorias redundantes quando pretende apresentar uma lista de categorias.

Agora, volte ao ficheiro category.php, e substitua a secção de título de página pelo seguinte código:

<h1 class="page-title"><?php _e( 'Category Archives:', 'seu-template' ) ?> <span><?php single_cat_title() ?></span></span></h1>
    <?php $categorydesc = category_description(); if ( !empty($categorydesc) ) echo apply_filters( 'archive_meta', '<div class="archive-meta">' . $categorydesc . '</div>' ); ?>

E na div “.entry-utility” troque:

            <span class="cat-links"><span class="entry-utility-prep entry-utility-prep-cat-links"><?php _e( 'Posted in ', 'seu-template' ); ?></span><?php echo get_the_category_list(', '); ?></span>

com o seguinte código modificado:

      <?php if ( $cats_meow = cats_meow(', ') ) : // Retorna categorias que não aquela pesquisada ?>
            <span class="cat-links"><?php printf( __( 'Also posted in %s', 'seu-template' ), $cats_meow ) ?></span>
            <span class="meta-sep"> | </span>
      <?php endif ?>

O TEMPLATE DE TAG

O template de tag é basicamente idêntico ao template de categoria, excepto no facto de ser para tags. Você já sabe como fazer: copie o conteúdo do ficheiro archive.php e altere o nome para tag.php.

E temos novamente uma função customizad para incluir no ficheiro functions.php intitulada tag_ur_it(). Ela funciona de forma parecida à função cats_meow() excepto o facto de que remove tags redundantes.

      // Retorna outras tags excepto a atual (redundante)
      function tag_ur_it($glue) {
       $current_tag = single_tag_title( '', '',  false );
       $separator = "\n";
       $tags = explode( $separator, get_the_tag_list( "", "$separator", "" ) );
       foreach ( $tags as $i => $str ) {
        if ( strstr( $str, ">$current_tag<" ) ) {
         unset($tags[$i]);
         break;
        }
       }
       if ( empty($tags) )
        return false;

       return trim(join( $glue, $tags ));
      } // end tag_ur_it

Agora, no ficheiro tag.php, substitua o título da página por:

          <h1 class="page-title"><?php _e( 'Tag Archives:', 'seu-template' ) ?> <span><?php single_tag_title() ?></span></h1>

e na div “.entry-utility” substitua:

            <?php the_tags( '<span class="tag-links"><span class="entry-utility-prep entry-utility-prep-tag-links">' . __('Tagged ', 'seu-template' ) . '</span>', ", ", "</span>\n\t\t\t\t\t\t<span class=\"meta-sep\">|</span>\n" ) ?>

pela versão modificada:

      <?php if ( $tag_ur_it = tag_ur_it(', ') ) : // Retorna tags excepto a pesquisada ?>
            <span class="tag-links"><?php printf( __( 'Also tagged %s', 'seu-template' ), $tag_ur_it ) ?></span>
      <?php endif; ?>

Está feito!

ESTÁ ACOMPANHANDO? TEM DÚVIDAS?

Este nono artigo teve como base a programação de nossos templates para arquivo, autor, categoria e tags. O mais importante neste momento é que você compreenda os passos que vamos dando e caso tenha dúvidas, poderá colocá-las sem problema. Contamos com a sua participação e as suas dúvidas. Está gostado? Participe com seus comentários!

Se não deseja perder pitada desta nova série sobre Como criar um Template WordPress, considere assinar a nossa newsletter e receber todos os próximos artigos por email e comodamente. É grátis!

Endereço de Email:

Até Já!