La sección "Humor en Apuros" se ha reformado. Visítala

Cómo añadir el tiempo de lectura estimado en los post y páginas de WordPress sin plugin

Visitas: 3.866
 
Cómo añadir el tiempo de lectura estimado en los post y páginas de WordPress

Tiempo de lectura.

¿Informar del tiempo de lectura aumenta la permanencia en el sitio?

En algunos casos, añadir esta información puede suponer un aumento en la cantidad de tiempo que los visitantes permanecen en tu sitio.

De distintos análisis y experiencias, al menos eso se dice, se desprende que la gente es más propensa a visitar un artículo cuando conoce de antemano el tiempo aproximado que le llevará leerlo.

¿A qué velocidad leemos?

Leyendo distintos textos aparecen algunos datos o aproximaciones que se repiten, como el de que la media de velocidad de lectura de un adulto es de 240 palabras por minuto con una tasa de comprensión del 60%, sin embargo, la velocidad de lectura disminuye sobre un 25% cuando se lee en una pantalla de ordenador en lugar de en papel.

Es por esto que en el ejemplo que se presenta se establece la velocidad en 200 palabras por minuto.

Añadir tiempo de lectura estimado sin plugin

Esta información se puede añadir con un plugin o con un poco de código. Como aquí es dogma evitar la instalación de un nuevo complemento que sirve sólo para una cosa simple (además, la mayoría están bastante abandonados) se explica cómo hacerlo con un snippet.

Si prefieres algo más visual y simple como una barra de progreso de lectura en la parte superior que se vaya llenando a medida que avanzas en la lectura, aquí puedes encontrar cómo añadirla también sin plugin.

He elegido y probado este código porque es el más simple ya que los que tienen en cuenta las imágenes miden un parámetro que es bastante relativo. Esto dependerá de qué tipo de imágenes se trate, su tamaño y cantidad de elementos y texto que contenga, etc. y no afina demasiado el recuento total.

No muchos blogs añaden esta estimación incluyendo las imágenes, pero como en este blog abundan y la mayoría son viñetas, por su naturaleza con poco texto, he decidido dejarlo en 10 segundos y aún me parece mucho.

Medium, por ejemplo, mide a 265 palabras por minuto con un ajuste realizado para las imágenes de 12 segundos para la primera, 11 para la segunda y 1 segundo menos para cada imagen que aparezca después. Cualquier otra después de la décima imagen se cuenta en tres segundos. Fuente.

Para las publicaciones en chino, japonés y coreano, Medium fija el número de caracteres en 500 por minuto con el mismo ajuste anterior para las imágenes.

Código, calcula teniendo en cuenta texto e imágenes

Este otro código tiene en cuenta el tiempo de lectura de las imágenes, que se establece en 10 segundos, pero quizá es demasiado para según qué imágenes así que lo he bajado a 6 segundos. Siempre se podría mejorar añadiéndole el cálculo de segundos o variables más complejas en función del alto de imágenes u otros parámetros para intentar afinar un poco más el dato. (Animo a cualquiera que sepa a que lo haga).

/*Tiempo de lectura */

function wp_reading_time() {

// OBTENER EL CONTENIDO DE LA ENTRADA DE WORDPRESS
$content = get_post_field( 'post_content', $post->ID );

// CONTAR EL NÚMERO DE PALABRAS
$word_count = str_word_count( strip_tags( $content ) );

// CONTAR EL NÚMERO DE IMÁGENES
$image_count = substr_count( $content, '<img' );

// TIEMPO DE LECTURA DE TEXTOS - 200 PALABRAS POR MINUTO
$reading_time = $word_count / 200;

// TIEMPO DE LECTURA DE IMÁGENES - 10 SEGUNDOS POR IMAGEN
$image_time = ( $image_count * 10 ) / 60;

// AÑADIR EL TIEMPO DE LECTURA DE TEXTOS E IMÁGENES
$total_time = round( $reading_time + $image_time );

// DETERMINAR SI ES SINGULAR O PLURAL
if ( $total_time == 1 ) { $minute = " minuto"; }
else { $minute = " minutos"; }

return $total_time . $minute;

}

*Este código, aunque funciona en GeneratePress, en el error_log se graba un error recurrente en esta línea:

// OBTENER EL CONTENIDO DE LA ENTRADA DE WORDPRESS
$content = get_post_field( 'post_content', $post->ID );

El error este:

Attempt to read property "ID" on null in    ...  /ruta y nº de línea de functions.php
PHP Warning:  Undefined variable $post in    ...    /ruta y mismo nº de línea de functions.php

Aún ando intentando descubrir cómo solucionarlo.

Para añadir el código hay varios caminos: descargando y editando functions.php en local, directamente desde el editor de plantillas WordPress (Apariencia/ Editor de temas) o editándolo, también "en caliente", desde tu administrador de archivos de Cpanel o similar.

Si no te sientes con valor para añadir a mano este snippet al archivo functions.php de tu plantilla, puedes optar por hacerlo usando el plugin Code Snippets, que además sirve para tener tu colección de funciones mejor organizada en un mismo sitio.

Así podrás poder revertir los cambios de forma rápida y fácil si se rompe algo o el código deja de ser compatible con alguna actualización de PHP, de algún plugin o del core de WordPress

Después bastará añadir este código que pintará los minutos en tu blog, donde se lee "tiempo estimado de lectura" puedes escribir lo que te parezca mejor.

<?php echo "Tiempo de lectura: " . wp_reading_time(); ?>

Puedes añadirlo donde te plazca, aunque si decides meterlo en el post meta, donde tu plantilla muestra el autor de la entrada, la fecha de publicación número de comentarios, etc. debes añadir el código al loop post meta del archivo content.php o single.php (dependiendo de cada plantilla) o page.php si quieres añadirlo también a las páginas.

Después de comprobar que funciona, basta adaptar el formato, añadirle un icono o lo que sea. Aquí ha quedado así:

Cómo añadir el tiempo de lectura estimado en los post y páginas de WordPress sin plugin

He optado por añadirlo con un shortcode creado con Ad Inserter sobre el tema hijo en la plantilla creada con Elementor PRO para todos los post.

Cómo añadir el tiempo de lectura estimado en los post y páginas de WordPress
Cómo añadir el tiempo de lectura estimado en los post y páginas de WordPress sin plugin

Aunque suene a lío, es una opción muy limpia para no tener que tocar ni una línea de código en WordPress y poder modificarlo rápido y sin complicaciones en cualquier momento.

Código, calcula sólo midiendo texto

Aquí tienes otra función alternativa que contabiliza solo texto y muestra minutos y segundos, es el que estoy usando ahora y no devuelve ningún error de PHP.

 * Estima el tiempo necesario para leer una entrada en WordPress */

function wpr_estima_tiempo_lectura() {

  $entrada = get_post();

  $ppm      = 250; // podemos escoger el PPM que queramos (200-300, por ejemplo)
  $palabras = str_word_count( strip_tags( $entrada->post_content ) );
  $minutos  = floor( $palabras / $ppm );
  $segundos = floor( ( $palabras % $ppm ) / ( $ppm / 60 ) );
  
  if ( 1 <= $minutos ) {
    $tiempo_estimado = $minutos . ' minuto' . ( 1 === $minutos ? '' : 's');
    if ( $segundos > 0 ) {
      $tiempo_estimado .= ', ' . $segundos . ' segundo' . ( 1 === $segundos ? '' : 's' );
    }
  } else {
    $tiempo_estimado = $segundos . ' segundo' . ( 1 === $segundos ? '' : 's' );
  }

  return $tiempo_estimado;
}

Para añadirlo en cualquier lugar:

<?php echo "Se lee en: " . wpr_estima_tiempo_lectura(); ?>

Actualización 21 de marzo de 2023

Extra, contador de palabras sin plugin

Una forma simple y rápida de añadir el número de palabras que tiene cada post. Puedes ponerlo bajo el título o en los meta, o donde quieras y darle formato con un poco de CSS.

1-Se crea shortcode con Code Snippet.

add_shortcode('contador', 'word_count');

2-Se le asigna la función.

function word_count() {
$content = get_post_field( 'post_content', get_the_ID());
$word_count = str_word_count( strip_tags( $content ) );
return $word_count;
}
echo ' ' , word_count();

Finalmente, por el mismo método descrito anteriormente, se añade el shortcode  "contador" en la plantilla con Elementor, GeneratePress, o lo que uses.

Y este es el resultado:

Contador de palabras sin plugin para WordPress

Servicio de optimización de WordPress


Suscríbete por email para recibir las viñetas y los artículos completos y sin publicidad

Artículos relacionados
 

Repositorio de documentales sobre dibujantes de cómic y humor gráfico.

Tontolares. Los titulares más gilipollas de la prensa. Envía los tuyos

Este blog se aloja en LucusHost

LucusHost, el mejor hosting

Tu WordPress puede volar

Servicio de optimización