WordPress vi dà la possibilità di cambiare la data di pubblicazione di un post e vi fornisce get_the_date() per recuperarla facilmente nel frontend. Cosa succede, però, se, per qualsiasi motivo, vuoi accedere alla data effettiva in cui il post è stato creato, invece di quella che hai impostato manualmente?
Apparentemente, WordPress mantiene la meta chiave _wp_old_date
che memorizza la vecchia data ogni volta che cambia. Puoi facilmente recuperarla usando get_post_meta()
. Quindi, echoing get_post_meta( get_the_ID(), '_wp_old_date' );
vi darà un array con tutte le vecchie date:
array (size=3) 0 => string '2020-03-14' 1 => string '2020-03-21' 2 => string '2020-03-11'
Secondo la documentazione, get_post_meta()
accetta un terzo parametro opzionale che se impostato su true restituirà solo il primo valore. Quindi, possiamo facilmente ottenere la data di creazione del post semplicemente usando get_post_meta( get_the_ID(), '_wp_old_date', true );
.
Ecco la fregatura, però: se non avete mai cambiato la data del post, _wp_old_date
sarà vuoto. Per affrontarlo, dobbiamo controllare se _wp_old_date
è vuoto e se lo è, ricadiamo nel nostro familiare get_the_date()
. Se ha un valore, possiamo restituirlo, tenendo a mente due cose:
- Probabilmente vorremmo mantenere il formato di visualizzazione che è impostato dall’Admin sulle opzioni di WordPress. Possiamo recuperarlo con un semplice
get_option( 'date_format' )
. - Dovremmo anche usare date_i18n, per essere sicuri di recuperare la data in un formato localizzato.
Quindi, alla fine, una funzione più a prova di futuro sarebbe probabilmente qualcosa del genere:
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()}