Criando um tema para WordPress – parte 2
Dando sequencia ao post anterior Criando um tema para WordPress – parte 1 vamos agora criar o arquivo single.php
para exibir o post inteiro.
<?php get_header(); ?>
<div id="conteudo" class="post">
<?php if( have_posts() ): ?>
<?php the_post();?>
<h2><?php echo the_title(); ?></h2>
<p style="text-align:right"><?php the_time('d/m/Y'); ?> - <?php the_author() ?> </p>
<?php the_content();?>
<div class="categorias">Categorias: <?php the_category(' , ');?></div>
<div class="tags">Tags: <?php the_tags('' , ' , ');?></div>
<?php comments_template(); ?>
<?php else: ?>
<p>Post não encontrado</p>
<?php endif; ?>
</div>
<?php get_sidebar();?>
<?php get_footer(); ?>
Vimos as funções get_header()
, get_sidebar()
e get_footer()
, que inserem as partes do layout que irão se repetir em outras partes do site.
Na linha 4 utilizamos um if
em vez de um while
, como estamos visualizamos um post único, a lista de post que o WordPress gera só terá um único post, então só precisamos saber se existe algum post.
Dentro do if
chamamos a função the_post()
para carregar os dados do post que serão mostradas através das funções the_title()
, the_time()
, the_author()
, the_content()
, que vimos no post anterior.
Na linha 11 temos uma função nova a the_category(' , ')
que retorna os links da categorias as quais o post pertence. O parâmetro que passamos para esta função será utilizado para separa os links das categorias caso haja mais de uma.
Na linha 12 temos outra função nova the_tags('' , ' , ')
que retorna os links das tags que marcam o post.
Na linha 14 chamamos a função comments_template() que carrega o arquivo de template dos comentários com o nome de comments.php
, se não tivermos no nosso tema um o WordPress nos fornece um padrão que irá conter a lista de comentários do post e um formulário para fazer um novo comentário.
Vamos criar nosso próprio comments.php
para ver como é!
<div id="comentarios">
<?php if ( have_comments() ) : ?>
<h5>Atualmente existe <?php comments_number('Nenhum Comentário', '1 Comentário', '% comentários' );?></h5>
<ol id="comments">
<?php $comments = get_comments(array( 'post_id'=>get_the_ID() , 'status'=>'approve' ) ); ?>
<?php foreach ($comments as $comment) : ?>
<li class="comment-<?php the_ID(); ?>">
<div class="comment-author">
<?php echo get_avatar( get_comment_author_email(), '50' ) ?>
<?php comment_author_link() ?>
<span class="comment-date"><?php comment_date() ?></span>:
</div>
<div class="comment-text">
<?php comment_text(); ?>
</div>
</li>
<?php endforeach; ?>
</ol>
<?php endif; ?>
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<input name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
<label for="author"><small>Nome (requerido)</small></label><br/><br/>
<input name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
<label for="email"><small>E-mail (não sera publicado) (requerido)</small></label><br/><br/>
<input name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><small>Website</small></label>
<br /><br />
<p><textarea name="comment" id="comment" cols="50" rows="10" tabindex="4"></textarea><br /></p>
<div style="text-align:center">
<input name="submit" type="submit" id="submit" tabindex="5" value="Enviar comentário" />
<?php comment_id_fields(); ?>
<?php do_action('comment_form', $post->ID); ?>
</div>
</form>
</div>
Na linha 2 testamos que se existe algum comentário nesse post. Na linha 4 chamamos a função comments_number() que mostra o total de comentários que o post tem, o primeiro parâmetro será mostrado se não houver comentários, o segundo se tiver um e o terceiro se tiver mais, sendo o "%"
substituído pelo número de comentários.
Na linha 7 chamamos a função get_comments()
para obter os comentários, como parâmetro passamos um array com os critérios dos comentários que queremos listar, o primeiro é post_id
para pegarmos somente os comentários deste post e para pegar o id deste post obtemos chamando a função get_the_ID()
e o segundo é que o status seja approve para somente listar comentários aprovados pela moderação. Esta função irá retornar um array de objetos de comentários.
Na linha 8 utilizamos um foreach
para percorrer o array de comentários $comments
e para cada comentário será colocado na variável $comment
, se alterar o nome desta variável as funções para mostrar os dados do comentário não irão funcionar, e será necessário chamar pelo nome do atributo, no estilo $comment->comment_ID
.
Na linha 12 chamamos a função get_avatar( )
para pegar a imagem de avatar do comentador, cadastrada no Gravatar e recebe como primeiro parâmetro o e-mail do comentador, que obtemos chamando a função get_comment_author_email()
e como segundo parâmetro o tamanho da imagem inserida.
Na linha 13 chamamos a função comment_author_link()
que vai exibir o nome do comentador marcado como link se ele forneceu seu website. Na linha 14 comment_date()
que mostra a data que o comentário foi enviado. Na linha 18 chamamos a função comment_text()
que mostra a mensagem do comentário.
Na linha 27 começamos a criar o formulário para envio de um novo comentário, onde utilizamos a função get_option('siteurl')
para pegar a url que está hospedado o blog, para formar a url do action que as informações do formulário devem ser envidas para o script wp-comments-post.php
pelo método POST.
Dentro do fomulário contém os inputs tendo os seguintes names: author, email, url e comment.
Na linha 43 chamamos a função comment_id_fields
que gera dois campos ocultos, necessário para identificar os comentários.
Na linha 44 chamamos a função do_action('comment_form', $post->ID)
para chamar ações criadas por plugin.
A principio com isso já temos um tema mínimo, existem muitos outros recursos que o WordPress disponibiliza e o melhor lugar é sempre a documentação, espero que este post seja de ajuda para uma introdução.
Se deseja baixar o tema criado no post segue o link.