Melhorando a exibição das datas no seu site

Melhorando a exibição das datas no seu site

Você já deve ter visitado algum site em que, ao invés de exibir a data no formato padrão dia/mês/ano, a data era exibida de um jeito mais humano, algo como 3 dias atrás. Mas como fizeram isso?

Já vi muitos temas utilizando bibliotecas JavaScript para criar datas mais legíveis no conteúdo, porém, o WordPress já tem uma função para fazer isso.

O que eu quis dizer com datas mais legíveis?

Você já deve ter visitado algum site em que, ao invés de exibir a data no formato padrão dia/mês/ano, a data era exibida de um jeito mais humano, algo como 3 dias atrás.

Muito mais fácil de entender quando o conteúdo foi publicado não?

Abaixo vou mostrar como fazer isso em seu loop:

<?php
$from = get_the_time( 'U' );
$to = current_time( 'timestamp' );

printf( _x( '%s ago', '%s = human-readable time difference', 'your-text-domain' ), human_time_diff( $from, $to ) );

Basicamente fizemos o seguinte:

Recuperamos a data do post (ou qualquer outro CPT) e salvamos na variavel $from.

$from = get_the_time( 'U' );

Depois pegamos a data atual do servidor e salvamos na variável $to.

$to = current_time( 'timestamp' );

Okay, isso ficou um pouquinho mais complexo por que estamos usando 3 funções de uma só vez (printf, _x e human_time_diff).

printf( _x( '%s ago', '%s = human-readable time difference', 'your-text-domain' ), human_time_diff( $from, $to ) );

Vou explicar do fim para o início da linha para fazer mais sentido:

  • human_time_diff: função que fará a mágica calculando a diferença entre a data de publicação e a data atual
  • _x: função de internacionalização que exibe um contexto para ajudar a vida dos tradutores
    • ‘%s ago’: string a ser traduzida
    • ‘%s = human-readable time difference’: comentário que será exibido ao tradutor em programas como PoEdit ou sites como Transifex e GlotPress
    • ‘your-text-domain’: deve ser o mesmo textdomain do seu tema
  • printf: função mágica que substituirá o %s pelo resultado da função human_time_diff

Eu poderia ter usado __() ao invés de _x()?

Sim, porém, é muito melhor deixar a vida dos tradutores mais fácil.

Já vi muitas pessoas traduzindo strings com %s sem deixar espaço após o S por não saber que isso fará com que a informação dentro do %s deixe de ser processada.

Resumidamente: Traduzir ‘%s ago’ como ‘%satrás’ quebrará sua tradução.

Bom, não vou aprofundar em tradução agora por que pretendo escrever sobre tradução de temas e plugins posteriormente.

Caso você queira saber mais sobre as funções utilizadas nesse exemplo, aqui estão os links para a documentação do WordPress:

printf() é nativo do PHP, não do WordPress 🙂

Um comentário

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Descubra mais sobre Rafael Funchal

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continue reading