WordPress gibt Ihnen die Möglichkeit, das Veröffentlichungsdatum eines Beitrags zu ändern, und stellt Ihnen die Funktion get_the_date() zur Verfügung, mit der Sie es leicht im Frontend abrufen können. Was passiert aber, wenn du aus irgendeinem Grund das tatsächliche Datum abrufen willst, an dem der Beitrag erstellt wurde, anstatt das, das du manuell eingestellt hast?

Anscheinend behält WordPress den _wp_old_date-Meta-Schlüssel, der das alte Datum jedes Mal speichert, wenn es sich ändert. Sie können es mit get_post_meta() leicht abrufen. Wenn man also get_post_meta( get_the_ID(), '_wp_old_date' ); eingibt, erhält man ein Array mit allen alten Daten:

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

Nach der Dokumentation akzeptiert get_post_meta() einen dritten, optionalen Parameter, der, wenn er auf true gesetzt wird, nur den ersten Wert zurückgibt. Wir können also ganz einfach das Erstellungsdatum des Beitrags ermitteln, indem wir get_post_meta( get_the_ID(), '_wp_old_date', true ); verwenden.

Der Haken an der Sache ist jedoch, dass _wp_old_date leer ist, wenn Sie das Datum des Beitrags nie geändert haben. Um damit umzugehen, müssen wir prüfen, ob _wp_old_date leer ist, und wenn das der Fall ist, greifen wir auf unser vertrautes get_the_date() zurück. Wenn es einen Wert hat, können wir ihn zurückgeben, wobei wir zwei Dinge im Auge behalten müssen:

  1. Wir möchten wahrscheinlich das Anzeigeformat beibehalten, das vom Administrator in den WordPress-Optionen festgelegt wurde. Wir können das mit einem einfachen get_option( 'date_format' ) abrufen.
  2. Wir sollten auch date_i18n verwenden, um sicherzustellen, dass wir das Datum in einem lokalisierten Format abrufen.

Am Ende würde eine zukunftssichere Funktion also wahrscheinlich so aussehen:

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.