WordPress: calcolo del tempo di lettura di un articolo in PHP senza usare plugin

CodeTutorial | 1 Febbraio 2019 di Giovanni Invernizzi
 - Paperplane

Il calcolo del tempo di lettura di un articolo è una funzione semplice da scrivere.

Ovviamente esistono plugin che svolgono questa funzione come ad esempio Reading Time WP – non sempre però è necessario aggiungere un altro plugin al tuo sito soprattutto se per raggiungere l’obiettivo finale bastano poche righe di codice.

La logica alla base è:

  • isolare il contenuto di un articolo – “the_content()”;
  • calcolare quante parole contiene;
  • capire quante parole è possibile leggere mediamente in un minuto;
  • calcolare e mostrare il rapporto tra il numero di parole e la velocità media di lettura;

Il vantaggio di scrivere in autonomia una funzione in PHP rispetto ad utilizzare un plugin è che possiamo calcolare il tempo di lettura basandoci unicamente sul contenuto dell’articolo oppure possiamo includere nel calcolo anche altri custom field.

Se ad esempio l’articolo è molto strutturato ed è necessaria una gestione di contenuti più complessi del tradizionale blog dovremo necessariamente prendere in considerazione tutti i campi che l’utente finale leggerà.

Qui sotto trovi una semplice funzione in PHP con i commenti.

Puoi inserire questa funzione direttamente nel file functions.php del tuo tema e modificarla in base alle tue necessità.

function acf_repeater_word_count() {
// recupero l’ID del post
global $post;
$post_id = $post->ID;
// dichiaro un array nel quale raccoglierò sia the_content che eventuali custom field
$content = array();
// in questo caso i custom field aggiuntivi sono all’interno di un repeater  di ACF
if ( have_rows( ‘nuovo_modulo’, $post_id ) ) : while ( have_rows( ‘nuovo_modulo’, $post_id ) ) : the_row();
// il repeater utilizza diversi moduli
$tipo_modulo = get_sub_field( ‘tipo_modulo’, $post_id );
switch ( $tipo_modulo ) {
// quando trovo il modulo di testo, l’unico che ci interessa, aggiungo il suo contenuto all’array
case ‘mod_testo’ :
$content[] = get_sub_field( ‘modulo_testo’, $post_id );
break;
}
endwhile; endif;
// aggiungo all’array anche il contenuto principale del post
$content[] = get_the_content();
// faccio il conteggio delle parole assicurandomi di serializzare la variabile
$total_words = str_word_count( serialize($content) );
// dichiaro il valore ipotetico di lettura parole/minuto
$words_per_minute = 180;
// calcolo il tempo di lettura media basato sul contenuto, assicurandomi di eliminare i decimali
$average_reading_time = ceil( $total_words / $words_per_minute);
// restituisco il risultato aggiungendo il simbolo dei muniti primi ‘'’
echo $average_reading_time . ‘'’;
}

Una volta personalizzata questa funzione puoi richiamarla da un articolo (o da pagina o da CPT) semplicemente usando

<?php acf_repeater_word_count(); ?>
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Loading...
Se l'hai trovato interessante condividi con questi obsoleti pulsanti
CI SONO ALTRI ARTICOLI, CHE FAI NON LI LEGGI?

Vuoi saperne di più? Contattaci!