Relative Zeitangaben in WordPress

Aktua­li­sie­rung: Damit das alles mehr Sinn macht, habe ich noch ein „über“ in das erste if eingebaut.

Kleine Bas­te­lei in der Mit­tags­pause: Über den Kom­men­ta­ren wird jetzt nicht mehr das Datum des Kom­men­tars ange­zeigt, son­dern wie lange er schon dort steht. Das finde ich sehr viel hüb­scher als die nor­male Zeitangabe.

Nur ein klein wenig musste ich rum­su­chen, bis ich eine Lösung für Word­Press gefun­den hatte. Im Nine­days Blog erklärt Terri Ann wie es geht und was der PHP-Code genau macht.

Da ich schon sehr viel Wert dar­auf lege das hier alles auf deutsch ist, über­setzte ich die weni­gen Texte schnell. Außer­dem habe ich das Skript so ange­passt, dass es statt vor 1 Minute nun vor einer Minute aus­gibt. Dazu habe ich in jede if-Abfrage noch ein wei­te­res „if“ ein­ge­baut, das die Zahl 1 durch einen Text ersetzt. Das sieht in mei­nen Augen bes­ser aus. Den von mir ver­wen­de­ten Code gibt es nach dem Klick.

Das ist nun der Code, der in die Datei functions.php des The­mes muss:

if(!function_exists('how_long_ago')){
        function how_long_ago($timestamp){
            $difference = time() - $timestamp;

            if($difference >= 60*60*24*365){        // if more than a year ago
                $int = intval($difference / (60*60*24*365));
                $s = ($int > 1) ? 'en' : '';
				if ($int == 1) {$int = 'einem';};
                $r = "vor über " . $int . ' Jahr' . $s;
            } elseif($difference >= 60*60*24*7*5){  // if more than five weeks ago
                $int = intval($difference / (60*60*24*30));
                $s = ($int > 1) ? 'en' : '';
				if ($int == 1) {$int = 'einem';};
                $r = "vor " . $int . ' Monat' . $s;
            } elseif($difference >= 60*60*24*7){        // if more than a week ago
                $int = intval($difference / (60*60*24*7));
                $s = ($int > 1) ? 'n' : '';
				if ($int == 1) {$int = 'einer';};
                $r = "vor " . $int . ' Woche' . $s;
            } elseif($difference >= 60*60*24){      // if more than a day ago
                $int = intval($difference / (60*60*24));
                $s = ($int > 1) ? 'en' : '';
				if ($int == 1) {$int = 'einem';};
                $r = "vor " . $int . ' Tag' . $s;
            } elseif($difference >= 60*60){         // if more than an hour ago
                $int = intval($difference / (60*60));
                $s = ($int > 1) ? 'n' : '';
				if ($int == 1) {$int = 'einer';};
                $r = "vor " . $int . ' Stunde' . $s;
            } elseif($difference >= 60){            // if more than a minute ago
                $int = intval($difference / (60));
                $s = ($int > 1) ? 'n' : '';
				if ($int == 1) {$int = 'einer';};
                $r = "vor " . $int . ' Minute' . $s;
            } else {                                // if less than a minute ago
                $r = 'gerade eben';
            }

            return $r;
        }
    }

Wie folgt wird nun das rela­tive Datum aus­ge­ge­ben, der fol­gende Code ist natür­lich schon auf meine Bedürf­nisse angepasst.

<?php
	if(!function_exists('how_long_ago')){ ' |' . comment_date();}
	else { echo how_long_ago(get_comment_time('U')); }
?>

Neben der Funk­tion get_comment_time() kann so auch get_the_time() ersetzt wer­den. Wie das genau geht, steht eben­falls im Text des Nine­days Blogs.

Viel­leicht ist ja noch dem ein oder ande­ren damit gehol­fen. Bei mir klappt alles ganz super, Fra­gen dür­fen gerne in die Kommentare.

Keine Kommentare bisher

Schreibe einen Kommentar oder kontaktiere mich bei Twitter unter @schneyra.

Schreibe einen Kommentar