WordPress antaa sinulle mahdollisuuden muuttaa postauksen julkaisupäivämäärää, ja se tarjoaa sinulle get_the_date()-toiminnon, jolla voit helposti hakea sen frontendistä. Mitä tapahtuu kuitenkin, jos jostain syystä haluat päästä käsiksi todelliseen päivämäärään, jolloin postaus oli luotu, manuaalisesti asettamasi päivämäärän sijasta?
Vielä ilmeisesti WordPress säilyttää meta-avaimen _wp_old_date
, joka tallentaa vanhan päivämäärän aina, kun se muuttuu. Voit helposti hakea tämän käyttämällä get_post_meta()
. Kaiku get_post_meta( get_the_ID(), '_wp_old_date' );
antaisi siis matriisin, jossa on kaikki vanhat päivämäärät:
array (size=3) 0 => string '2020-03-14' 1 => string '2020-03-21' 2 => string '2020-03-11'
Dokumentaation mukaan get_post_meta()
hyväksyy kolmannen, valinnaisen parametrin, joka true-asetuksella palauttaa vain ensimmäisen arvon. Voimme siis helposti saada viestin luontipäivämäärän yksinkertaisesti käyttämällä get_post_meta( get_the_ID(), '_wp_old_date', true );
.
Tässä on kuitenkin juju: Jos et ole koskaan muuttanut viestin päivämäärää, _wp_old_date
on tyhjä. Tätä varten meidän on tarkistettava, onko _wp_old_date
tyhjä, ja jos se on, palaamme tuttuun get_the_date()
:ään. Jos sillä on arvo, voimme palauttaa sen pitäen mielessä kaksi asiaa:
- Haluaisimme luultavasti säilyttää näyttömuodon, jonka ylläpitäjä on asettanut WordPressin asetuksista. Voimme hakea sen yksinkertaisella
get_option( 'date_format' )
:lla. - Meidän tulisi myös käyttää date_i18n:tä varmistaaksemme, että haemme päivämäärän lokalisoidussa muodossa.
Loppujen lopuksi tulevaisuudenkestävämpi funktio näyttäisi luultavasti jotakuinkin tältä:
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()}