Aktuelles Datum in WordPress anzeigen
In diesem Tutorial zeige ich, wie du das aktuelle Datum in WordPress mit einer eigenen Template-Funktion oder einem Plugin darstellen kannst. Insbesondere Online Magazine und News Portale zeigen häufig das heutige Datum an, um auf die Aktualität der Website hinzuweisen.
Inspiriert für diesen Artikel wurde ich durch einen Bug in meinen Themes, welchen ich kürzlich behoben habe. Fälschlicherweise setzte ich dort zuerst die Funktion current_time() ein, welche jedoch nicht lokalisiert ist und deshalb englische Monatsnamen ausgibt.
Aktuelles Datum in WordPress anzeigen
Um das aktuelle Datum in WordPress zu erhalten, ist es besser, die Core Funktion date_i18n() zu verwenden. Das Kürzel i18n steht für internationalization. Wir erhalten das Datum also in lokalisierter Form, d.h. Wochentage und Monatsnamen werden automatisch übersetzt.
Als erster Paramater muss zwingend ein Datumsformat übergeben werden:
echo date_i18n( 'Y-m-d' ); // => 2019-01-10
Die WordPress Funktion verhält sich grundsätzlich wie die normale PHP date() Funktion, es herrscht aber keine Feature Parität. Nicht alle Formatangaben werden von WordPress unterstützt.
Beispiele:
<?php
// 10.01.2019
echo date_i18n( 'd.m.Y' );
// Jan 10, 2019
echo date_i18n( 'M d, Y' );
// Donnerstag, 10. Januar 2019
echo date_i18n( 'l, j. F Y' );
?>
Abhängig von der konfigurierten Sprache der WordPress Installation wird das Datum übersetzt. Im Deutschen folglich Januar statt January und Donnerstag statt Thursday. Die Übersetzung findet immer durch den Core statt, für Themes und Plugins wird keine Textdomain benötigt.
Anwendung:
Die Ausgabe des Datums kann in den Template-Dateien des WordPress Themes erfolgen, zum Beispiel in der header.php oder footer.php. Bei Anpassung eines fremden Themes rate ich dazu, die Templates mit einem Child-Theme zu überschreiben und nicht direkt zu modifizieren.
Datumsformat der WordPress Einstellungen verwenden
Administratoren können unter Einstellungen → Allgemein im WordPress Backend ein gewünschtes Datumsformat für die gesamte Website festlegen.
Es ist daher sinnvoll, dieses gewählte Datumsformat bei der Ausgabe des aktuellen Datums in WordPress zu berücksichtigen, anstatt das Format statisch im Code zu definieren.
Das konfigurierte Format für das Datum kann mit get_option() abgefragt werden:
$date_format = get_option( 'date_format' );
Danach wird – wie bereits bekannt – das Datum mit dem ermittelten Format angezeigt:
echo date_i18n( $date_format );
Zusammengefasst in einer Zeile:
echo date_i18n( get_option( 'date_format' ) );
Bestimmtes Datum in WordPress anzeigen
Wer statt dem heutigen ein bestimmtes Datum darstellen möchte, kann als zweites Argument einen Timestamp übergeben. Der Timestamp kann dynamisch mit strtotime() generiert werden.
Beispiel:
// 24. Dezember 1989
echo date_i18n( get_option( 'date_format' ), strtotime( '1989-12-24' ) );
Aktuelle Uhrzeit im WordPress Theme ausgeben
Die aktuelle Uhrzeit kann problemlos mit der gleichen Funktion ausfindig gemacht werden. Dazu muss nur das übergebene Format angepasst werden:
echo date_i18n( 'H:i' );
Alternativ können wir auch hier das eingestellte Zeitformat in den WordPress Optionen nutzen:
echo date_i18n( get_option( 'time_format' ) );
Datum und Uhrzeit können natürlich kombiniert werden:
echo date_i18n( 'd.m.Y H:i' );
echo date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ) );
Datum mit WordPress Plugin als Shortcode einfügen
Eine weitere Möglichkeit für das Einfügen des heutigen Datums ist der Einsatz des Plugins Shortcode for Current Date, welches auf WordPress.org heruntergeladen werden kann. Damit kann das Datum auch ohne Code und Theme-Modifikationen angezeigt werden.
Nach Installation des Plugins kann das aktuelle Datum mit dem Shortcode [current_date] in beliebige Beiträge, Seiten oder Widgets eingefügt werden. Als Argument kann auch hier ein Datumsformat übergeben werden:
[current_date format='F d, Y']
Einziges Manko: Das Plugin nutzt bis dato ebenfalls die unlokalisierte Funktion current_time(), die Monatsnamen erscheinen deshalb immer in Englisch. Ich habe den Entwickler auf date_i18n() hingewiesen, vielleicht kommt ja dafür noch ein Update.