• News
  •  
  • Tools
  •  
  • Bücher
  •  
  • Fotos
  •  
  • Impressum
  •  
  • Be social!
  • RSS
  • FaceBook
  • Google Buzz
  • Mister Wong
  • Delicious
  • Xing
  •  
 

Das Datum eines Posts wie bei Twitter darstellen

Formatierte Zeit eines Posts

Formatierte Zeit eines Posts

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&uuml;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
    Das Netz der Welt?
    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
    lateinische Datumsangabe
    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
    WordPress
    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 [...]
 

Der Guru 2.0 Blog lebt von Deinem Kommentar

Es existieren zwei TrackBacks zu diesem Post

TrackBack von Tweets that mention Das Datum eines Posts wie bei Twitter darstellen » Guru 2.0 › 3.0 -- Topsy.com am 1. 1. 2011 um etwa 0 Uhr[...] This post was mentioned on Twitter by DocGoy. DocGoy said: Das Datum eines Posts wie bei Twitter darstellen » Guru 2.0 › 3.0 http://ht.ly/3wuI2 | geeky [...]
TrackBack von Das Datum eines Posts in römischen Zahlen darstellen » Guru 2.0 › 3.0 am 11. 2. 2011 um etwa 9 Uhr[...] 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 ein wenig umformaiteren. Dabei muss es ja [...]

Deine Meinung ist dem Guru 2.0 wichtig





XHTML - Du kannst diese Tags benutzen:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 
  • Werbung

  •  
  • Diesen Post empfehlen


     

     

     

     

     
    Stumbleupon
     
    Wikio
  •  
  • Das war eine Hilfe?

  •  
  • Du brauchst Papier?

  •