Lesedauer von Beiträgen in WordPress anzeigen

Die geschätzte Lesedauer in WordPress Beiträgen. Das mag für den Besucher die Vorabinformation des Artikels sein. So ist zu sehen, in welcher Zeitspanne hier zum Erfolg zu kommen ist.  Der Zeitdauer zum Wälzen ist nur das Prägnant, welches wirklich zu lesen ist, also ohne das der Bilder. Da ist sehr guter Code von der Website Kulturbanause. Und weiter bei so Beiträgen mit mehreren Codes im <pre>-Tag. Wäre das auch herauszurechnen? Der Frage ist hier dann noch eine kleine Erweiterung, dass die Codes welche innerhalb <pre>-Tags sind, nicht in die Lesezeit mit einfließen.

Geschätzte Lesedauer 

Das PHP frei nach Kulturbanause im Titel Geschätzte Lesezeit von Beiträgen in WordPress anzeigen. Hier dann mit der Erweiterung, um die Inhalte (bspw von Codes) im <pre>-Tag herauszurechnen.

Themes functions.php

/* Lesezeit anzeigen */
function kb_readingTime($post = null, $wpm = 225)
{
// Inhalt auslesen und bereinigen
$content = get_post_field('post_content', $post);
$content = strip_pre_tags($content); // <-- NEU !!
$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 so %s Min.   '), $reading_time);
}

// NEU --> die Funktion zum pre-Tag
function strip_pre_tags($content)
{
$regex = '/<pre[^>]*>([\s\S]*?)<\/pre[^>]*>/m';

return preg_replace($regex, '', $content);
}

Hinweise

  • Die Funktion um des <pre>-Tags Inhalte herauszurechnen, siehe https://www.phpliveregex.com/p/G7u#tab-preg-replace.
  • Der Reihenfolge wie oben des Codes ist das richtig. Denn wenn es der Reihenfolge anders, kann es die <pre>-Tags nicht entfernen, weil sie in der Zeile davor entfernt wurden. Also gemeint ist das $content = strip_pre_tags($content);. Wenn das so unterhalb eingefügt ist, dann funktioniert wie folgend das Beispiel ∴nicht∴
// Inhalt auslesen und bereinigen, so nicht
$content = get_post_field('post_content', $post);
$content = strip_tags(strip_shortcodes($content));
$content = strip_pre_tags($content); // <-- NEU !!

Der Code zur Ausgabe

Der Vollständigkeitshalber ist hier nach Kulturbanause nochmal der Code zur Ausgabe:

<?php echo kb_readingTime(); ?>
Lesedauer, Beispiel Twenty Fourteen Theme content.php
Beispiel Twenty Fourteen Theme content.php

Danke an ‚Kulturbanause‘ und andere WP-Freunde.