Ändern Sie human_time_diff (), um “Tage” auf “d” und “Stunden” auf “h” usw. zu verkürzen

Ich benutze die function echo time_ago (), die die Zeit so anzeigt:

Vor 5 Tagen was ist der beste Weg, um es vor 5 Tagen zu ändern?

Meine Recherchen führten mich zur human_time_diff () -function, die sich in “formatting.php” befand. Also habe ich direkt versucht, die function zu bearbeiten, die sich unter /wp-includes/formatting.php befindet, aber wenn ich “hours” auf “h” und so weiter ändere .. Es ist verrückt und gibt mir Fehler. Ich weiß, dass das Ändern des cores nicht der beste Weg ist, also irgendwelche Ideen? Vielen Dank.

Solutions Collecting From Web of "Ändern Sie human_time_diff (), um “Tage” auf “d” und “Stunden” auf “h” usw. zu verkürzen"

Es gibt keinen Filter für die Ausgabe dieser function. Sie können es forken (kopieren / umbenennen / bearbeiten) oder einen Wrapper hinzufügen, der Strings in der Ausgabe ersetzt:

function short_time_diff( $from, $to = '' ) { $diff = human_time_diff($from,$to); $replace = array( 'hour' => 'h', 'hours' => 'h', 'day' => 'd', 'days' => 'd', ); return strtr($diff,$replace); } 

PS nachträglicher Einfall – tatsächlich sind Strings lokalisiert, so dass ein Übersetzungsfilter zu verwenden ist … Aber zu ersetzendes Material ist zu generisch und das wird riskieren, es anderswohin zu brechen.

AKTUALISIEREN

Seit WP 4.0 ist ein Filter für human_time_diff verfügbar:

 add_filter( 'human_time_diff', function($since, $diff, $from, $to) { $replace = array( 'hour' => 'h', 'hours' => 'h', 'day' => 'd', 'days' => 'd', ); return strtr($since, $replace); }, 10, 4 );