WordPress geeft u de mogelijkheid om de publicatiedatum van een post te wijzigen en biedt u get_the_date() om deze eenvoudig op te halen op de frontend. Maar wat gebeurt er als u, om wat voor reden dan ook, toegang wilt krijgen tot de feitelijke datum waarop het bericht is gemaakt, in plaats van de datum die u handmatig hebt ingesteld?

Het is duidelijk dat WordPress de _wp_old_date meta key bewaart, waarin de oude datum wordt opgeslagen telkens wanneer deze verandert. Je kunt deze eenvoudig ophalen met get_post_meta(). Dus, het echoën van get_post_meta( get_the_ID(), '_wp_old_date' ); zou je een array geven met alle oude datums:

array (size=3) 0 => string '2020-03-14' 1 => string '2020-03-21' 2 => string '2020-03-11'

Volgens de documentatie accepteert get_post_meta() een derde, optionele parameter die, indien ingesteld op true, alleen de eerste waarde retourneert. Dus, we kunnen eenvoudig de datum van de post creatie krijgen door get_post_meta( get_the_ID(), '_wp_old_date', true );.

Hier zit echter het addertje onder het gras: Als je de datum van de post nooit hebt veranderd, zal _wp_old_date leeg zijn. Om hiermee om te gaan, moeten we controleren of _wp_old_date leeg is en als dat zo is, vallen we terug op onze vertrouwde get_the_date(). Als het wel een waarde heeft, kunnen we die teruggeven, rekening houdend met twee dingen:

  1. We willen waarschijnlijk de weergave-indeling behouden die is ingesteld door de Admin op WordPress opties. We kunnen dat ophalen met een eenvoudige get_option( 'date_format' ).
  2. We zouden ook date_i18n moeten gebruiken, om er zeker van te zijn dat we de datum in een gelokaliseerd formaat ophalen.

Dus, uiteindelijk, zou een meer toekomstbestendige functie er waarschijnlijk ongeveer zo uitzien:

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()}

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.