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!
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!
Até Já!