Geschätzte Lesezeit von Beiträgen in WordPress anzeigen
Mit einer einfachen PHP-Funktion für WordPress kann die Lesezeit eines Textes anhand der Textlänge und der Lesegeschwindigkeit berechnet werden.
Web-Inhalte werden oft in klar begrenzten Zeitfenstern gelesen. Beispielsweise endet eine Bahnfahrt in wenigen Minuten oder es muss Zeit bis zum Beginn eines Treffens überbrückt werden. Mit der Anzeige der erwarteten Lesezeit könnt ihr eine hilfreiche Komfortfunktion anbieten. Je nach Länge des Artikels und Zeitfenster können Personen dann entscheiden, ob der Artikel für später gemerkt oder direkt gelesen wird.
Die Lesezeit eines Textes berechnen
Damit die durchschnittliche Lesezeit berechnet werden kann, sind lediglich zwei Variablen notwendig.
- Länge des Textes in Wörtern
- Lesegeschwindigkeit (Wörter pro Minute)
Die durchschnittliche Lesegeschwindigkeit ist unterschiedlich je nach Zielgruppe und Komplexität des Textes. Typisch sind Werte von ca. 300 Wörtern pro Minute. Wir verwenden in technischen Blog-Beiträgen meist einen Wert von 200 Wörtern pro Minuten um auszugleichen, dass Abschnitte doppelt gelesen werden und Code-Abschnitte oder erklärende Grafiken enthalten sind.
WordPress-Funktion für die Anzeige der Lesezeit
Die folgende Funktion definiert zu Beginn die Lesezeit (Wörter pro Minute) in der Variablen $wpm
. Anschließend liest sie den Inhalt eines WordPress-Beitrags aus und löscht überflüssige Bestandteile. Die Anzahl der Wörter wird berechnet und in die Variable $word_count
geschrieben.
Im zweiten Teil der Funktion wird die Anzahl der Wörter durch die Lesezeit geteilt. Im Ergebnis erhaltet ihr die erwartete Lesezeit.
<?php
function kb_readingTime( $post = null, $wpm = 200 ) {
// Inhalt auslesen und bereinigen
$content = get_post_field( 'post_content', $post );
$content = strip_tags( strip_shortcodes( $content ) );
// Anzahl der Wörter berechnen
$word_count = str_word_count( $content );
// Lesezeit berechnen
$reading_time = ceil( $word_count / $wpm );
return sprintf( esc_html__( 'Lesezeit ca. %s Min.'), $reading_time );
}
?>
Die Ausgabe erfolgt mit folgendem Code:
<?php echo kb_readingTime(); ?>
Den Inhalt des
<pre>
-Tags bei der Lesedauer ignorierenDas PHP frei nach Kulturbanause mit der gekennzeichneten Erweiterung, um Inhalte vom
<pre>
-Tag herauszurechnen. – wem’s interessiert.Funktion des
<pre>
-Tags herausrechnen, siehe https://www.phpliveregex.com/p/G7u#tab-preg-replaceWie würde denn der Code aussehen, wenn man die Anzahl der Wörter statt der Lesezeit ausgeben will?