Modelo de Temas: Single.php

Modelo de Temas: Single.php

O WordPress conta com um modelo de template que foi criado exclusivamente para exibir postagens individuais que existem no seu site.

Ele é chamado de single.php, e deve ser criado dentro da pasta raíz do seu tema.

Este arquivo possui algumas variações de hierarquia, como por exemplo:

  • single-{post-type}-{slug}.php
  • single-{post-type}-{ID}.php
  • single-{post-format}.php 
  • single.php (Padrão Geral):

Conhecendo o single.php

Como você já sabe, o single.php é um modelo de template que o WordPress usa quando seu visitante acessa um dos seus posts.

Quando me refiro aos posts, estou me referindo exclusivamente as suas postagens (artigos) que você cria no menu de Posts > Adicionar Novo Post.

Nesse caso, posts não inclui páginas ou qualquer outro tipo de conteúdo, ok?

Sempre quando um visitante abre uma postagem, o WordPress segue a seguinte hierarquia de arquivos:

  • single-{variações}.php
  • single.php
  • singular.php
  • index.php

Veremos agora, como funciona o arquivo single.php e suas variações 🤖

Criando o single.php

Dentro da pasta raíz do seu tema, crie um novo arquivo chamado single.php:

<?php get_header(); ?>

<!-- Insira aqui o HTML da sua Postagem única -->

<?php get_footer(); ?>

Se você acompanhou a nossa jornada de criação de temas para WordPress desde o início, não terá duvidas dos códigos que foram inserido acima (get_header() | get_footer()).

Agora, basta que você estilize o arquivo da maneira como desejar, usando o loop ou qualquer outra funcionalidade do WordPress.

É importante ressaltar, que o coração do single.php é o loop, pois é essa estrutura que vai percorrer todos os seus posts, e trazer as informações necessárias.

No caso do single.php, o loop normalmente é configurado para exibir apenas a postagem única associada à página atual, veja um exemplo:

<?php while (have_posts()) : the_post(); ?>
 <!-- Código para exibir o conteúdo da postagem -->
<?php endwhile; ?>

No caso do código acima, ele é bem similar aos códigos que vimos em jornadas anteriores, cuja responsabilidade é de trazer todos os posts do seu site.

Mas no caso do single.php, o WordPress se encarrega de trazer apenas um único POST, e é por esse motivo que não precisamos verificar se existem postagens.

Fique atento ao s existente no final da função have_posts() que pode te confundir 😅

Dentro deste arquivo, os criadores de temas, geralmente fazem o uso das Tags Condicionais, que possibilitam realizar algumas verificações dentro da post.

Tags condicionais

Nas próximas lições, teremos um conteúdo exclusivo que vai falar tudo o que você precisa saber sobre Tags Condicionais no WordPress.

Mas por hora, vamos nos atentar a explicar o que são elas, sem entrar em muitos detalhes 😃

Tags Condicionais, são pequenas funções que o WordPress disponibiliza para determinar em que contexto ou situação, uma parte específica do código deve ser executada.

Elas ajudam a adaptar a exibição do seu site com base em diferentes condições, como por exemplo:

  • Verificar se estamos na página de Home,
  • Verificar se o tipo de post é em formato de vídeo,
  • Verificar se o certificado SSL está ativo, ou não.

E entre muitas outras validações que você pode encontrar consultando a documentação.

Com relação as tags condicionais que podem ser aplicadas ao arquivo single.php, nós temos:

is_single()

O comando is_single(), pode ser usado para fazer diversas checagens, quando se trata de uma postagem.

<?php if (is_single()) : ?>
 <!-- Código a ser executado apenas em postagens individuais -->
<?php endif; ?>

No caso do comando acima, ele só verifica se o conteúdo é uma postagem comum, mas, ele pode aceitar diversos parâmetros diferentes, vejamos:

is_single('33'): Verifica se o POST atual possuí o ID igual a 33.

<?php if (is_single('33')) : ?>
 <!-- Código a ser executado apenas na postagem cujo ID é 33 -->
<?php endif; ?>

is_single('Notícias Quentes'): Verifica se o POST atual possuí o título "Notícias Quentes".

<?php if (is_single('Notícias Quentes')) : ?>
 <!-- Código a ser executado apenas na postagem o título for "Notícias Quentes" -->
<?php endif; ?>

is_single('noticias-quentes'): Verifica se o POST atual é da URL 'noticias-quentes':

<?php if (is_single('noticias-quentes')) : ?>
 <!-- Código a ser executado apenas na postagem cuja URL é "noticias-quentes" -->
<?php endif; ?>

is_single(array(1, 24, 'noticias-quentes', 77, 'bife-a-cavalo', 'Arroz com Ovo', 21)): Aqui nós podemos passar um array, onde verificamos diversos posts diferentes?

<?php if (is_single(array(1, 24, 'noticias-quentes', 77, 'bife-a-cavalo', 'Arroz com Ovo', 21))) : ?>
 <!-- Código a ser executado em diversas variações, desde que o post atual pertença a uma das categorias listadas no array acima -->
<?php endif; ?>

is_sticky()

A função is_sticky() no WordPress, é responsável por verificar se a postagem atual está marcada como "destacada", 

Uma postagem do tipo "Sticky", é uma postagem que é fixada na parte superior da página do blog, independentemente da data de sua publicação.

<?php if (is_sticky()) : ?>
 <p>Esta é uma postagem em destaque!</p>
<?php else : ?>
 <p>Esta não é uma postagem em destaque.</p>
<?php endif; ?>

Para criar uma postagem desse tipo, você precisa fazer isso pelo painel administrativo do Wordpress.

É importante ressaltar que essa função aceita parâmetros, por exemplo:

<?php if (is_sticky('15')) : ?>
 <!-- Código a ser executado quando a postagem está destacada e ela for o ID 15 -->
<?php endif; ?>

No código acima, podem existir diversas postagem em destaque, mas qui, estamos dando exclusividade a aquela que possuí ID igual a 15.

Essas são as tags condicionais principais que podemos usar no single.php.

Mas nada impede que você use as tags acima em outros arquivos, pois numa eventual falta do arquivo single.php, os arquivos singular.php ou index.php serão os arquivos encarregados para mostrar o post.

Onde essas tags devem ser inseridas?

No caso desta lição, essas tags devem existir dentro do single.php, mais especificamente dentro do loop do WordPress.

Posso usar mais de uma tag condicional dentro de um mesmo arquivo?

Sim, você pode fazer o uso de quantas tags condicionais desejar, desde que todas elas estejam dentro do loop do WordPress.

Conhecendo as variações do arquivo single.php

Como visto anteriormente no início desta lição, vimos que o arquivo single.php atua como um fallback file, isto é, quando não existe arquivos mais específicos.

Agora, chegou o momento de entendermos mais a fundo o funcionamento de cada um desses arquivos.

single-{post-type}-{slug}.php

Usando o single-{post-type}-{slug}.php quando queremos exibir o conteúdo de uma postagem individual de um tipo de postagem específico.

No local onde esta escrito {post-type}, podemos informar o tipo de postagem que esse arquivo ficará responsável, no wordpress existem 7 tipos diferentes de postagens de forma padrão:

  • Post (Post Type: ‘post’)
  • Page (Post Type: ‘page’)
  • Attachment (Post Type: ‘attachment’)
  • Revision (Post Type: ‘revision’)
  • Navigation menu (Post Type: ‘nav_menu_item’)
  • Block templates (Post Type: ‘wp_template’)
  • Template parts (Post Type: ‘wp_template_part’)

Lembrando que é possível criar tipos de postagens personalizados, o que é um assunto para uma futura lição 😄

Já no local onde está escrito {slug}, nós informamos a versão amigável da URL daquele post que foi gerado pelo WordPress.

Então, supondo que eu queira criar uma página personalizada para uma postagem do tipo post, da URL noticias-quentes, nesse caso, eu poderia fazer isso da seguinte forma: single-post-noticias-quentes.php.

Apesar disso, este tipo de arquivo costuma ser usado exclusivamente para {post-type} do tipo post.

single-{post-type}-{ID}.php

Funciona de forma similar ao arquivo que vimos anteriormente, a única diferença, é que no local da URL amigável, nós inserimos o ID ({ID}) da postagem.

Por exemplo, supondo que queremos criar uma página personalizada para um post, cujo o ID sabemos que é 17, nesse caso, o resultado seria: single-post-17.php.

single-{post-format}.php

Já neste arquivo, não precisamos informar o {slug} e muito menos o {id}, bastando apenas informar o formato do post.

Por exemplo, supondo que queremos criar uma página personalizada para todos os tipos de posts de forma genérica, poderíamos criar: single.post.php.

Este arquivo funciona de forma mais genérica, e procede o single.php na hierarquia do WordPress.

Conclusão

Nesta lição, você aprendeu a importância do arquivo single.php junto com as suas variações.

Você também aprendeu um pouco sobre as Tags Condicionais e como elas são importantes para a lógica dos nossos arquivos.

Na próxima lição, iremos aprender a adicionar comentários ás nossas páginas de posts.

Te espero lá 😎