WordPress lhe dá a opção de alterar a data de publicação de um post e ele lhe fornece get_the_date() para buscá-lo facilmente no frontend. Mas o que acontece se, por qualquer razão, você quiser acessar a data real em que o post foi criado, ao invés daquela que você definir manualmente?
Aparentemente, o WordPress mantém a meta chave _wp_old_date
que armazena a data antiga toda vez que ela muda. Você pode recuperar isto facilmente usando get_post_meta()
. Assim, echoing get_post_meta( get_the_ID(), '_wp_old_date' );
dar-lhe-ia um array com todas as datas antigas:
array (size=3) 0 => string '2020-03-14' 1 => string '2020-03-21' 2 => string '2020-03-11'
De acordo com a documentação, get_post_meta()
aceita um terceiro, parâmetro opcional que se definido para true irá retornar apenas o primeiro valor. Então, podemos facilmente obter a data de criação do post simplesmente usando get_post_meta( get_the_ID(), '_wp_old_date', true );
.
Aqui está a captura, no entanto: Se você nunca alterou a data do post, _wp_old_date
estará vazio. Para lidar com isso, precisamos verificar se _wp_old_date
está vazio e se estiver, nós voltamos ao nosso familiar get_the_date()
. Se tiver um valor, podemos devolvê-lo, tendo em mente duas coisas:
- Provavelmente queremos manter o formato de exibição que é definido pelas opções Admin no WordPress. Nós podemos pegar isso com um simples
get_option( 'date_format' )
. - Nós também devemos usar date_i18n, para ter certeza de que recuperamos a data em um formato localizado.
Então, no final, uma função mais à prova de futuro provavelmente pareceria algo assim:
function get_creation_date( $entry_id = '' ) { $post_id = $entry_id ? $entry_id : get_the_ID(); $old_date = get_post_meta( $post_id, '_wp_old_date', true ); return $old_date ? // If the old date exists date_i18n( get_option( 'date_format' ), // Retrieve the date in localized format strtotime( $old_date ) ) : // and use the display format set on WordPress options get_the_date(); // else, use get_the_date()}