Cómo mostrar el tiempo de lectura estimado en las publicaciones de blog
Si ejecuta un blog de WordPress, probablemente esté tratando de encontrar diferentes complementos y fragmentos para mantener a sus visitantes ocupados y alentarlos a leer sus publicaciones sin hacer clic.
Hoy en día, los visitantes a menudo quieren obtener la mayor cantidad de información posible simplemente hojeando una página. Mostrar el tiempo de lectura estimado para una publicación es muy útil para esto. De esta forma, un visitante sabrá cuánto tiempo necesita para obtener información leyendo un tema de interés. A su vez, esto también alentará a los escritores de blogs a escribir publicaciones que serán más interesantes y que consumirán menos tiempo. Además, como propietario de un blog, podrá determinar el mejor enfoque si verifica las métricas y compara el tiempo que los visitantes pasan en diferentes publicaciones.
Algunos complementos ciertamente cubren esta funcionalidad, pero la función de WordPress que maneja esto es muy simple de usar. Por lo tanto, no hay necesidad de obstruir su blog con otro complemento solo para este propósito.
Para comprender fácilmente este método, lo explicaremos integrando los cambios en el tema gratuito de WordPress Twenty Sixteen.
Empecemos con la función.
if( !function_exists('content_estimated_reading_time')) {
/**
Function that estimates reading time for a given $content.
@param string $content Content to calculate read time for.
@paramint $wpm Estimated words per minute of reader.
@returns int $time Esimated reading time.
*/
function content_estimated_reading_time( $content = '', $wpm = 200) {
$clean_content= strip_shortcodes( $content );
$clean_content= strip_tags( $clean_content);
$word_count= str_word_count( $clean_content);
$time = ceil( $word_count/ $wpm );
$output = '<span class="read-time-holder">';
$output .= '<span class="read-time">'. $time .'</span>' .' ';
$output .= '<span class="read-text">'. esc_attr__('min read', 'twentysixteen' ). '</span>';
$output .='</span>';
return $output;
}
}
La función acepta dos parámetros: contenido ($contenido) y palabras estimadas por minuto de lector ($wpm). El segundo parámetro se establece en 200 para un lector promedio, pero puede establecerlo en algún otro valor. Puede recopilar información útil sobre esto en Internet.
Dentro de la función, necesitamos eliminar el contenido de todo lo demás, excepto de las propias palabras. Entonces, primero, usaremos dos funciones para eliminar códigos cortos y etiquetas (strip_shortcodes y strip_tags ).
Luego, necesitamos contar las palabras en el contenido limpio. Por lo tanto, almacenaremos el contenido en una variable $word_count. La función para contar palabras que se usa aquí es str_word_count.
Para calcular el tiempo promedio de lectura, solo necesitamos dividir el conteo de palabras por las palabras leídas por minuto, mientras que la función ceil utilizada aquí es para redondear el resultado.
La segunda parte de la función es solo para generar el html con la hora y el texto que siguen.
Para integrar la función en su tema, simplemente agréguela al final del archivo functions.php para el tema que está utilizando actualmente.
Como puede ver, toda la lógica detrás del tiempo promedio de lectura es muy simple. Aún así, la función no hará nada por sí misma. Es por eso que para mostrarlo en su lista de blogs o publicaciones individuales, debemos llamarlo primero.
Llamando a la función
Hay diferentes maneras en las que puede poner la función a trabajar. Cubriremos tres de ellos a continuación.
Comúnmente, la forma más fácil para la gran mayoría de los usuarios es llamar a la función directamente desde el interior del archivo donde la necesitan. Digamos que, por ejemplo, necesita llamar a la función dentro del archivo single.php, que es una plantilla para mostrar publicaciones individuales. Esto simplemente significa que necesita abrir este archivo y luego hacer eco de la función allí con el contenido de la publicación como parámetro, así:
<?php echo content_estimated_reading_time( get_the_content() ); ?>
Esto es, por supuesto, si tiene un bucle y toda la estructura dentro del archivo single.php, pero lo más probable es que no lo tenga. Un ejemplo de la estructura puede verse así:
2 Usar filtro
Los temas modernos y mejor codificados separan estos módulos en diferentes archivos. Por lo tanto, un mejor método es usar el filtro y devolver el contenido con la adición de la función de filtro. El tema de cómo agregar un filtro ya ha sido tratado ampliamente en Internet.
3 Modifique la función existente para tener más control
Este es probablemente el mejor enfoque porque puede tener más control para posicionar la salida. En el tema Twenty Sixteen, hay una función responsable de imprimir categorías y etiquetas para cada publicación en la lista y publicaciones individuales. Es una función twentysixteen_entry_taxonomies. Todo lo que te queda por hacer es simplemente copiarlo y pegarlo dentro de functions.php y modificar su última parte con nuestra función para la llamada de tiempo de lectura estimado.
Nos gustaría mencionar brevemente que, dado que mantuvimos el mismo nombre para la función, anulará el original. Ahora, la función con nuestra modificación se ejecutará en todos los lugares dentro del tema.
Las funciones modificadas deberían verse así:
/**
* Function override of default function in parent theme
* Adding reading time function at the end
*/
function twentysixteen_entry_taxonomies() {
$categories_list= get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen') );
if ($categories_list&&twentysixteen_categorized_blog()) {
printf( '<span class="cat-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
_x( 'Categories', 'Used before category names.', 'twentysixteen' ),
$categories_list
);
}
$tags_list= get_the_tag_list( '', _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen') );
if ($tags_list&&! is_wp_error( $tags_list)) {
printf( '<span class="tags-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
_x( 'Tags', 'Used before tag names.', 'twentysixteen' ),
$tags_list
);
}
/*our code modification to this function*/
print content_estimated_reading_time(get_the_content());
}
De esta forma, mostraremos el tiempo de lectura en la parte con las etiquetas y categorías a las que pertenece.
El código dentro del archivo functions.php del tema Twenty Sixteen debería verse así:
if (!function_exists('content_estimated_reading_time')) {
/**
Function that estimates reading time for a given $content.
@param string $content Content to calculate read time for.
@param int $wpm Estimated words per minute of reader.
@returns int $time Esimated reading time.
*/
function content_estimated_reading_time( $content = '', $wpm = 200) {
$clean_content = strip_shortcodes( $content );
$clean_content = strip_tags( $clean_content );
$word_count = str_word_count( $clean_content );
$time = ceil( $word_count / $wpm );
$output = '<span class="read-time-holder">';
$output .= '<span class="read-time">'. $time. '</span>'. ' ';
$output .= '<span class="read-text">'. esc_attr__( 'min read', 'twentysixteen' ). '</span>';
$output .= '</span>';
return $output;
}
}
/**
* Function override of default function in parent theme
* Adding reading time function at the end
*/
function twentysixteen_entry_taxonomies() {
$categories_list = get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen') );
if ($categories_list && twentysixteen_categorized_blog()) {
printf( '<span class="cat-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
_x( 'Categories', 'Used before category names.', 'twentysixteen' ),
$categories_list
);
}
$tags_list = get_the_tag_list( '', _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen') );
if ($tags_list &&! is_wp_error( $tags_list)) {
printf( '<span class="tags-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
_x( 'Tags', 'Used before tag names.', 'twentysixteen' ),
$tags_list
);
}
/*our code modification to this function*/
print content_estimated_reading_time(get_the_content());
}
Preferiblemente, esta modificación debe hacerse en el tema hijo.
Al agregar la función de tiempo de lectura estimado en diferentes temas, tenga en cuenta que las mejores formas de integrar la función de llamada pueden variar. Trate de tomarse un tiempo para navegar por los pasos que hemos cubierto para encontrar el mejor enfoque.
Esperamos que este artículo le haya resultado útil. Si te ha gustado, ¡no dudes en consultar algunos de estos artículos también!