Ako pridať odhadovaný čas čítania do príspevkov a stránok WordPress bez pluginu

 

Ako pridať odhadovaný čas čítania do príspevkov a stránok WordPress

Čas čítania.

Zvyšuje sa čas čítania?

V niektorých prípadoch môže pridanie týchto informácií zvýšiť čas, ktorý návštevníci strávia na vašej stránke.

Z rôznych analýz a skúseností vyplýva, že ľudia častejšie navštívia článok, keď vopred vedia, koľko času im bude trvať jeho prečítanie.

Ako rýchlo čítame?

Pri čítaní rôznych textov sa opakujú niektoré údaje alebo priblíženia, ako napríklad, že priemerná rýchlosť čítania dospelého človeka je 240 slov za minútu s mierou porozumenia 60 %, avšak rýchlosť čítania sa znižuje približne o 25 %, keď sa číta na obrazovke počítača namiesto na papieri.

Preto je v uvedenom príklade rýchlosť nastavená na 200 slov za minútu.

Pridať odhadovaný čas čítania bez pluginu

Tieto informácie je možné pridať pomocou zásuvného modulu alebo kódu. Keďže je tu dogma vyhnúť sa inštalácii nového pluginu, ktorý slúži len na jednu jednoduchú vec (okrem toho je väčšina z nich dosť zanedbaná), vysvetlíme, ako to urobiť pomocou úryvku.

Ak dávate prednosť niečomu vizuálnejšiemu a jednoduchšiemu, napríklad lište priebehu čítania v hornej časti, ktorá sa počas čítania vypĺňa, tu nájdete návod, ako ju pridať bez zásuvného modulu.

Tento kód som vybral a otestoval, pretože je najjednoduchší, pretože tie, ktoré zohľadňujú obrázky, merajú parameter, ktorý je dosť relatívny. Závisí to od typu obrázkov, ich veľkosti a množstva prvkov a textu, ktoré obsahujú, atď. a príliš neupresňuje celkový počet.

Nie veľa blogov pridáva tento odhad vrátane obrázkov, ale keďže v tomto blogu ich je veľa a väčšina z nich sú vinety, svojou povahou s malým množstvom textu, rozhodol som sa ponechať ho na 10 sekúnd a stále sa mi to zdá veľa.

Stredná hodnota je napríklad 265 slov za minútu s úpravou pre obrázky 12 sekúnd pre prvý obrázok, 11 sekúnd pre druhý a o 1 sekundu menej pre každý ďalší obrázok. Každý po desiatom obrázku sa započítava do troch sekúnd. Zdroj.

V prípade čínskych, japonských a kórejských publikácií nastaví stredná hodnota počet znakov na 500 za minútu s rovnakým nastavením ako vyššie pre obrázky.

Kód: počíta so zohľadnením textu a obrázkov

Tento ďalší kód zohľadňuje čas čítania obrázkov, ktorý je nastavený na 10 sekúnd, ale možno je to pre niektoré obrázky príliš veľa, takže som ho znížil na 6 sekúnd. Vždy by sa to dalo vylepšiť pridaním výpočtu sekúnd alebo zložitejších premenných v závislosti od výšky obrázkov alebo iných parametrov a pokúsiť sa údaje ešte trochu spresniť (odporúčam to urobiť každému, kto to vie).

/*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;

}

*Tento kód síce funguje v GeneratePress, ale v error_logu sa na tomto riadku zaznamenáva opakujúca sa chyba:

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

Táto chyba:

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

Stále sa snažím zistiť, ako to opraviť.

Kód môžete pridať niekoľkými spôsobmi: stiahnutím a úpravou súboru functions.php lokálne, priamo z editora šablóny WordPress (Appearance/Theme Editor) alebo jeho úpravou, tiež "on the fly", zo správcu súborov Cpanel alebo podobného.

Ak sa necítite dostatočne odvážne na to, aby ste tento úryvok pridali do súboru functions.php svojej šablóny ručne, môžete sa rozhodnúť pre jeho pridanie pomocou doplnku Code Snippets, ktorý tiež slúži na lepšie usporiadanie vašej zbierky funkcií na jednom mieste.

Takto môžete rýchlo a jednoducho vrátiť zmeny, ak sa niečo pokazí alebo kód už nie je kompatibilný s aktualizáciou PHP, doplnku alebo jadra WordPress.

Potom stačí pridať tento kód, ktorý na vašom blogu vymaľuje minúty, kde je napísané "odhadovaný čas čítania", môžete napísať, čo chcete.

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

Môžete ho pridať kamkoľvek chcete, hoci ak sa rozhodnete ho umiestniť do meta príspevku, kde vaša šablóna zobrazuje autora príspevku, dátum uverejnenia, počet komentárov atď., musíte pridať kód do slučky meta príspevku v súbore content.php alebo single.php (v závislosti od každej šablóny) alebo page.php, ak ho chcete pridať aj na stránky.

Po overení, že to funguje, stačí upraviť formát, pridať ikonu alebo čokoľvek iné. Tu to vyzerá takto:

Ako pridať odhadovaný čas čítania do príspevkov a stránok WordPress bez pluginu 1

Rozhodol som sa ho pridať pomocou skratky vytvorenej pomocou Ad Inserter na detskej téme v šablóne vytvorenej pomocou Elementor PRO pre všetky príspevky.

Ako pridať odhadovaný čas čítania do príspevkov a stránok WordPress

Hoci to znie chaoticky, je to veľmi čistá možnosť, ako sa nemusieť dotknúť ani jediného riadku kódu vo WordPress a môcť ho kedykoľvek rýchlo a bez komplikácií upraviť.

Kód: vypočíta iba meraním textu

Tu je alternatívna funkcia, ktorá počíta iba text a zobrazuje minúty a sekundy, je to tá, ktorú teraz používam a nevracia žiadne chyby 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;
}

Pridá sa kamkoľvek:

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

Aktualizácia 21. marca 2023

Extra, počítadlo slov bez zásuvného modulu

Jednoduchý a rýchly spôsob pridávania počtu slov v každom príspevku. Môžete ho umiestniť pod nadpis alebo do meta, alebo kamkoľvek chcete, a naformátovať ho pomocou trochu CSS.

1-Vytvorte skratku pomocou úryvku kódu.

add_shortcode('contador', 'word_count');

2-Priradená funkcia.

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();

Nakoniec rovnakým spôsobom, ako je popísané vyššie, pridajte do šablóny skratku "counter" pomocou Elementoru, GeneratePress alebo čohokoľvek, čo používate.

A toto je výsledok:

Počítadlo slov bez pluginu WordPress