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.