Creare una funzione per il tempo di lettura di un articolo di WordPress

Tempo di lettura: 3 minuti

Aggiungere il tempo di lettura di un articolo aumenta il coinvolgimento nella lettura dell’articolo: ecco come aggiungere questa informazione agli articoli di WordPress.

Una dovuta premessa: il calcolo del tempo di lettura è tecnicamente un calcolo del tempo medio di lettura stimato che si basa su alcuni dati.

Facendo qualche ricerca, tutto si basa sul tempo medio di lettura di un testo standard, che è stimabile in 265 parole al minuto. Qualcuno dice di più, qualcuno dice di meno… aggiungendo poi qualche secondo anche per le immagini.

Partiamo da questo dato allora: quante parole sono contenute nell’articolo: a meno di strani template o comportamenti del sistema sono le parole del titolo più quelle del contenuto dell’articolo.

$content = []; 

$content[] = get_the_title(); 
$content[] = get_the_content(); 

$content = implode(' ', $content); 
$words = str_word_count($content);

Per comodità di gestione inseriamo il titolo e il contenuto in un array (di nome $content) e li incolliamo (con la funzione implode) con degli spazi nel mezzo. Per contare poi le parole usiamo la funzione str_word_count.

Per stimare poi i secondi necessari alla lettura il calcolo è:

  • numero di parole / parole lette al minuto * 60 secondi

A questo conto possiamo poi aggiungere magari 12 secondi per la “lettura” dell’immagine in evidenza… ed ecco fatto: abbiamo il tempo di lettura stimato in secondi.

Per rendere il tutto più leggibile portiamo il tempo in una “forma più umana” ed in ciò WordPress ci viene incontro con la funzione human_readable_duration (documentazione alla pagina ufficiale) che però necessita del tempo diviso in minuti e secondi e formattato come mm:ss.

Facciamo quindi una divisone intera per tornare ad avere i minuti e il resto per avere i secondi.

$ii = intdiv($time, 60);
$ss = $time % 60;

$duration = $ii.':'.$ss;
$timetoread = human_readable_duration($duration)

Semplice vero?

La funzione ritornerà una informazione del tipo 2 minuti, 52 secondi.

Inserendo il tutto in una funzione globale, nel file functions.php, possiamo quindi usare una semplice chiamata all’interno del loop come per qualsiasi altra informazione dell’articolo. Ecco di seguito il codice completo:

Fonti:

Credits: illustrazione di copertina Man read a message di Anastasiya Melnikova