WordPress vă oferă opțiunea de a modifica data publicării unei postări și vă pune la dispoziție get_the_date() pentru a o prelua cu ușurință în frontend. Ce se întâmplă însă dacă, dintr-un motiv oarecare, doriți să accesați data reală la care a fost creată postarea, în loc de cea pe care ați setat-o manual?
Se pare că WordPress păstrează metacheia _wp_old_date
care stochează vechea dată de fiecare dată când aceasta se schimbă. Puteți prelua cu ușurință acest lucru folosind get_post_meta()
. Așadar, dacă veți da ecoul get_post_meta( get_the_ID(), '_wp_old_date' );
, veți obține un array cu toate datele vechi:
array (size=3) 0 => string '2020-03-14' 1 => string '2020-03-21' 2 => string '2020-03-11'
Conform documentației, get_post_meta()
acceptă un al treilea parametru opțional care, dacă este setat la true, va returna doar prima valoare. Așadar, putem obține cu ușurință data de creare a postului pur și simplu folosind get_post_meta( get_the_ID(), '_wp_old_date', true );
.
Iată însă capcana: dacă nu ați schimbat niciodată data postului, _wp_old_date
va fi gol. Pentru a face față, trebuie să verificăm dacă _wp_old_date
este gol, iar dacă este, ne întoarcem la familiarul nostru get_the_date()
. Dacă are o valoare, o putem returna, ținând cont de două lucruri:
- Probabil că am dori să menținem formatul de afișare care este setat de către Admin pe opțiunile WordPress. Putem prelua asta cu un simplu
get_option( 'date_format' )
. - De asemenea, ar trebui să folosim date_i18n, pentru a ne asigura că recuperăm data într-un format localizat.
Așa că, în final, o funcție mai rezistentă la viitor ar arăta probabil cam așa:
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()}