Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Mostrando Data e Hora em um Loop para WordPress

by
Difficulty:BeginnerLength:ShortLanguages:

Portuguese (Português) translation by André Victor Ribeiro Amaral (you can also view the original English article)

Adicionar data e hora em um loop WordPress parece uma tarefa simples, certo?

Bem, sim. Pode ser o caso de codificar uma tag de template simples e deixar o WordPress fazer o trabalho por você. Mas às vezes você pode encontrar alguns problemas no caminho.

Nessa dica rápida, eu vou mostrar pra você diferentes funções do WordPress que mostram data e hora, e te dizer qual delas usar em cada situação.

As Tags de Template Disponíveis

WordPress te dá quatro funções com saída de data e/ou hora. São elas:

  • the_date(). Por padrão, ela vai imprimir a data de um post no formato F j, Y; assim, um post que foi publicado no dia 20 de Novembro de 2018, vai ser impresso como November 20, 2018.
  • get_the_date() - ela retorna a data mas não imprime na tela. Para fazer isso, você deve usar echo get_the_date(); o que te dá o mesmo resultado de the_date(). É útil se você já está utilizando echo no seu código. Além disso, esse comando também pode te ajudar a contornar problemas de não imprimir as datas, como você vai ver a seguir.
  • the_time() e get_the_time() - essas funções retornam a hora por padrão, mas se você especificar o formato de saída, elas também podem incluir a data. Você pode, inclusive, ter somente a data como saída da função - se você quiser; mas faz mais sentido usar the_date() ou echo get_the_date().

Formatando a Data

Cada função tem um formato padrão; mas você pode sobrescrever isso, se você precisar. Para fazer isso, você vai precisar usar o padrão de formatação de data e hora do PHP.

Aqui estão alguns exemplos, para todos os posts publicados no dia 20 de Novembro de 2018.

  • the_date() vai ter como saída November 20, 2018 - por padrão.
  • echo get_the_date( l, S M Y ) vai retornar Tuesday, 20th Nov 2018.
  • the_time( 'g:i a' ) vai ter como saída 2:03 pm.
  • echo get_the_time( 'G:i' ) vai retornar 14:03.
  • the_time( 'g:i a, D, j F y' ) vai ter como saída 2:03pm, Tues, 20 November 18.

Solucionando Problemas de Datas no Loop: Falta de Datas em uma Página de Arquivo

Se você está utilizando the_date() para recuperar a data em uma página de arquivo, e você descobriu que a data não está sendo mostrada em alguns posts; isso acontece porque a função the_date() não repete a data para posts subsequentes publicados em um mesmo dia.

Às vezes você pode querer manter dessa forma, se você não quiser repetir a data para todo post publicado no mesmo dia.

Mas se você quer ter certeza que todos os posts vão ter data (junto com o título e quaisquer outras informações que você estiver imprimindo na tela), você vai precisar utilizar outra função. Você pode utilizar qualquer uma das três funções acima.

A opção mais simples é substituir the_date() por echo get_the_date(). Se você quiser adicionar, também, a hora, o the_time() ou echo get_the_time() vai funcionar.

Nota: Se você está intrigado com o fato de que esse problema acontece com a função the_date(), mas não acontece com a função the_time(); a justificativa vem do fato de que posts publicados na mesma data não foram publicados no mesmo horário. Você teria que se esforçar muito - agendando os seus posts ou editando os tempos de publicação - para que isso aconteça!

Eu tive esse problema em templete de uma tema que eu codifiquei para um cliente. Nesse template existiam diferentes loops, cada um deles para um tipo diferente de conteúdo no site e todos eles utilizando WP_Query. O problema não era aparente, até o dia em que eles adicionaram dois posts (não é algo que faziam normalmente). Eles ficaram intrigados pelo fato de que, no segundo post, a data não aparecia na página inicial; e por isso, continuaram editando o conteúdo, recarregando a página e republicando o post... até que eles desistiram e vieram me perguntar o porquê de aquilo acontecer.

Aqui está o código original:

Eu editei o trecho de código, e então ficou assim:

No começo da linha li class="home newsletter", eu substitui the_date( 'j, F' ) por echo get_the_date( 'j, F' ). Isso corrigiu o problema.

Assim, se você se deparou com uma situação na qual as datas não estavam sendo exibidas corretamente nos seus arquivos, essa pode ser a solução.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.