Das Datum eines Posts wie bei Twitter darstellen
Irgendwo habe ich einmal eine Routine zum Formatieren des Datums und der Zeit für einen WordPress Post gefunden. Leider habe ich keine Ahnung mehr wo, aber trotzdem will ich euch diesen Code-Schnippsel nicht vorenthalten.
Ich hatte einfach die Idee, das Veröffentlichungsdatum meiner Posts so wie die Zeitangaben bei Twitter darzustellen. Dazu gibt es zwar eine passende Funktion in PHP, aber diese funktioniert für uns deutschsprachige Anwender leider nicht. Daher habe ich ein wenig in die Trickkiste gegriffen.
Ihr benötigt dazu eine neue Funktion in der Datei functions.php des aktiven Templates. Falls diese Datei dort nicht existiert, legt sie einfach an. Aber vergesst dann nicht in der ersten Zeile <?php und in der letzten Zeile ?> einzufügen. Nun kommt die komplette Funktion, welche die Veröffentlichungszeit des Posts mit der aktuellen Zeit vergleicht und die passende Ausgabe zusammenstellt. Der Aufwand ist hier etwas größer, da wir in Deutsch die Mehrzahl und auch verschiedene Zeitangaben haben. Zusätzlich werden auch noch einstellige Zahlen durch die passenden Wörter ersetzt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | //Veroeffentlichungszeit formatieren function formatAgo($timestamp){ //Differenz in Sekunden ermitteln $diff = time() - $timestamp; //Zeitdifferenz hinzurechnen $diff += 7200; $zeit = ''; //Sekunden if ($diff < 60) $zeit = 'Sekunde'; else{ //Minuten $diff = round($diff / 60); if ($diff < 60) { $zeit = 'Minute'; } else { //Stunden $diff = round($diff / 60); if ($diff < 24) { $zeit = 'Stunde'; } else { //Tage $diff = round($diff / 24); if ($diff < 7) { if ($diff == 1) { $zeit = 'gestern'; } else if ($diff == 2) { $zeit = 'vorgester'; } else { $zeit = 'Tage'; } } else { //Wochen $diff = round($diff / 7); if ($diff == 1) { $zeit = 'letzte Woche'; } else { //Wenn mehr als eine Woche vorbei, //dann das Datum ausgeben $zeit = 'am '. date('j. n. Y \u\m \e\t\w\a G \U\h\r', $timestamp); } } } } } //Mehrzahl n hinzufuegen //nicht fuer Datum und Woche if ($diff != 1 && strpos($zeit, 'am ')===false && strpos($zeit, 'Woche')===false) { $zeit .= 'n'; } //einstellige Zahlen ersetzen //nicht fuer (vor)gestern und Datum if (strpos($zeit, 'gestern')===false && strpos($zeit, 'vorgestern')===false && strpos($zeit, 'am ')===false) { switch ($diff) { case 1: //Falls Woche, keine Ersetzung durchfuehren if (strpos($zeit, 'Woche')===false) { $retVal = 'einer '.$zeit; } else { $retVal = $zeit; } break; case 2: $retVal = 'zwei '.$zeit; break; case 3: $retVal = 'drei '.$zeit; break; case 4: $retVal = 'vier '.$zeit; break; case 5: $retVal = 'fünf '.$zeit; break; case 6: $retVal = 'sechs '.$zeit; break; case 7: $retVal = 'sieben '.$zeit; break; case 8: $retVal = 'acht '.$zeit; break; case 9: $retVal = 'neun '.$zeit; break; default: $retVal = $diff.' '.$zeit; break; } //Das Wort, ausser bei Woche, voranstellen if (strpos($zeit, 'Woche')===false) { $retVal = 'vor '.$retVal; } } else { $retVal = $zeit; } //Rueckgabe der formatierten Zeit return $retVal.' gepostet'; } |
Nun musst Du nur mit die einzelnen Dateien deines Themas anpassen, in denen ein Veröffentlichungsdatum angezeigt wird. Dies sind normalerweise die Dateien single.php und index.php bzw. loop.php. Suche dort nach dem Befehl the_time() und ersetze in durch folgende Zeile. Du musst aber auf die php-Tags (<?php und ?>) aufpassen. Diese darfst Du nicht ineinander verschachteln.
1 | < ?php echo ago(get_the_time('U')); ?> |
Weitere Posts zu diesem Thema
- Wie konvertiere ich eine Adresse in Längen- und Breitengrad

Auf dieses Problem bin ich gerade eben, beim Erstellen eines neuen Themes für WordPress gestossen. Ich habe eine Adresse oder einen Ort und will ganz [...] - Das Datum eines Posts in römischen Zahlen darstellen

Heute haben wir mal ein wenig Spass. Wie ich ja schon vor einiger Zeit im Post zum Twitter-Datum dargstellst habe, können wir in WordPress das Datum e [...] - Werbung nur für Besucher von Suchmaschinen anzeigen

In fast jedem Blog kommt Werbung vor. Zumindest wollen wir mit unserem Hobby ja die Serverkosten wieder reinkriegen. Ich will hier aber nicht eine Di [...] - Kommentar vs. Spam
Es ist wieder einmal soweit. Das Verhältnis wird von Woche zu Woche schlechter: 3,63 Ist das jetzt gut, da viele Spamer auf Bekanntheit hindeuten oder [...] - Linkpoint #1
Für diese Woche ist der Guru 2.0 Blog der Hoster für die Linkpoint-Aktion. Da ich ja schon die Blogs der Region Aktion gestartet habe, paßt diese Akti [...]





Momentan sind 0 Benutzer, 0 Gäste & 0 Crawler online.
Seit 2007 wurden 1090 Posts veröffentlicht & kein Post wird erscheinen.
Es wurden 4619 Kommentare geschrieben & 216 TrackBacks gesetzt.
Es existieren zwei TrackBacks zu diesem Post