Boteco Digital

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.

Categorias Wordpress
comments powered by Disqus