La siguiente función en PHP te permite obtener el tiempo estimado de lectura de un texto.
<?php
/**
* Get the estimated reading time in minutes.
*
* @param string $content The post content.
* @param int $wpm Words per minute. Default to 250.
* @return false|float Reading time in minutes.
*/
function get_estimated_reading_time($content, $wpm = 250) {
$content = strip_tags($content);
$word_count = str_word_count($content);
return ceil($word_count / $wpm);
}
A partir de aquí te explico sobre la función, así que si solo llegaste por el código es tu momento para copiar el código y seguir programando.
Tiempo estimado de lectura en PHP
Para que la función cumpla su cometido necesitamos dos cosas, el contenido y la cantidad de palabras leídas por minuto.
El contenido es el texto al cual tenemos que calcular el tiempo estimado de lectura. Por otra parte, la cantidad de palabras leídas por minuto es la clave para obtener el tiempo estimado de lectura.
Cada persona tiene su propio promedio de tiempo de lectura. Para los adultos, existe un promedio total del tiempo estimado entre 200 y 250 palabras por minuto.
Sabiendo esto, nuestro valor por default para el tiempo estimado de lectura o $wpm
es de 250
.
A continuación te muestro una prueba de la función en PHPSandbox.io. Da click en el botón Run para ejecutar el script.
La función usa strip_tags()
para eliminar todas las etiquetas HTML y PHP de un string. Ninguna etiqueta HTML o PHP es necesaria para el cálculo, solo necesitamos el texto.
También se usa la str_word_count()
para devolver la cantidad de palabras en un texto. El valor devuelto servirá para calcular el tiempo de lectura estimado y el resultado será guardado en la variable $word_count
.
Al final, hay que dividir la cantidad de palabras, $word_count
, y la cantidad de palabras leídas por minuto, $wpm
.
El resultado de la división anterior la pasaremos dentro de la función ceil()
. Así podemos enviar el resultado al usuario con un valor redondeado.
Si necesitas reducir o incrementar el valor de las palabras leídas por minuto, puedes especificarlo desde la llamada de la función en el segundo parámetro, por ejemplo:
get_estimated_reading_time($content, 300);
Tiempo estimado de lectura en WordPress
También puedes implementar el tiempo estimado de lectura en WordPress, tal como al principio de este y cualquier post de mi blog.
Podrías usar la misma función aquí presentada, pero en WordPress podemos agregar otra función para eliminar los shortcodes del contenido del post:
strip_shortcodes( $content );
La función completa para WordPress será:
<?php
function get_estimated_reading_time( $content = '', $wpm = 250 ) {
$content = strip_shortcodes( $content );
$content = strip_tags( $content );
$word_count = str_word_count( $content );
return ceil( $word_count / $wpm );
}
Como la función es para WordPress, no olvides agregar un prefijo a la función. Y si estás desarrollando un plugin para WordPress, aquí te dejo una lista sobre cómo desarrollarlos.
Deja un comentario