Ajoutez le temps de lecture à vos articles

Pourquoi afficher le temps de lecture et le nombre de mots ? Ces indications ne risquent-elles pas de faire fuir un lecteur pressé ?

Cet article prend 3 minutes à lire et comporte 729 mots.

Vous avez cer­taine­ment remar­qué, en dessous du titre de chaque arti­cle, que le temps de lec­ture et le nom­bre de mots sont affichés.

Pourquoi avoir rajouté ces indi­ca­tions ? Il sem­ble, d’après plusieurs blogueurs, que l’a­jout de ces indi­ca­tions réduisent le taux de rebond, par­fois de manière sig­ni­fica­tive.

L’in­ter­naute est un homme pressé — paraît-il. Sauf quand il trou­ve une infor­ma­tion dont il a besoin.

Les études menées par les psy­cho­logues Claude Mess­ner et Michaela Wänke mon­trent que plus le lecteur a d’indi­ca­tions annex­es (per­ti­nentes), plus l’im­pli­ca­tion est impor­tante.

Dans le cas présent, il sait com­bi­en de temps il va pass­er à la lec­ture de votre arti­cle, et si le nom­bre de mots est élevé, c’est (sub­jec­tive­ment) un indice de qual­ité.

Ces don­nées n’ont pas d’u­til­ité pour un pro­duit par exem­ple, l’in­térêt n’est pas dans le nom­bre de mots sur la page, ni dans le temps de lec­ture, mais dans le taux de con­ver­sion !

Il ne va peut-être pas tout lire, mais au moins, il aura eu un aperçu du con­tenu de l’ar­ti­cle.

Vous trou­verez des exten­sions pour le temps de lec­ture, mais en fait, un sim­ple bout de code suf­fit, et per­met plus de sou­p­lesse.

Voici com­ment procéder…

Enregistrer temps de lecture et nombre de mots

Placez le bout de code suiv­ant dans votre fichi­er functions.php, ou mieux, créez un nou­veau snip­pet  dans Code Snip­pets :

function pc_reading_time($post_id, $post, $update)  {

  if( !$update || wp_is_post_revision($post_id) || $post->post_type != 'post' || ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) ) {
    return;
  }

  $theContent = str_replace('[', '<', $post->post_content);
  $theContent = str_replace(']', '>', $theContent);
  $word_count = str_word_count(strip_tags($theContent));

  $minutes = ceil( $word_count / 250 );

  // ajout du nombre de mots
  update_post_meta( $post_id, 'words_count', $word_count );

  // ajout du temps de lecture en minutes
  update_post_meta( $post_id, 'time_to_read', $minutes );

}

add_action('save_post', 'pc_reading_time', 10, 3);

Ce bout de code est exé­cuté lors de l’en­reg­istrement d’un arti­cle — si vous avez plusieurs arti­cles déjà en ligne, vous pou­vez tous les sélec­tion­ner (par page), choisir Mod­i­fi­er dans les Actions groupées et Enreg­istr­er, même sans effectuer la moin­dre mod­i­fi­ca­tion.

C’est la méth­ode que j’ai choisi pour ce site et les 10 arti­cles précédem­ment pub­liés.

Mais si vous avez des cen­taines d’ar­ti­cles déjà pub­liés, vous pour­rez dans un pre­mier temps créer une boucle de type fore­ach par exem­ple, l’exé­cuter une fois, puis la sup­primer, plutôt que de pass­er page après page pour enreg­istr­er une ving­taine d’ar­ti­cles à la fois.

Pour ceux qui ne con­nais­sent pas Code Snip­pets, direc­tion l’ar­ti­cle Cen­tralisez vos bouts de code avec « Code Snip­pets » où vous trou­verez toutes les expli­ca­tions quant à l’u­til­ité et à l’u­til­i­sa­tion de cette exten­sion.

Vous avez les don­nées stock­ées, il ne vous reste plus qu’à…

Afficher temps de lecture et nombre de mots

Pour affich­er ces don­nées, il suf­fit de récupér­er l’op­tion pour l’ar­ti­cle en cours :

// temps de lecture
echo get_post_meta($post->ID, 'time_to_read', true). ' mn';
// nombre de mots
echo number_format ( get_post_meta($post->ID, 'words_count', true), 0, ',', ' ' ) . ' mots';

Vous insér­erez ce bout de code dans vos fichiers de mod­èles (single.php par exem­ple), là où vous avez décidé d’af­fich­er l’in­for­ma­tion.

Mais il est aus­si pos­si­ble d’af­fich­er ces don­nées en util­isant un short­code, voici com­ment faire…

Afficher avec un shortcode

Si vous souhaitez affich­er le temps de lec­ture ou le nom­bre de mot dans l’ar­ti­cle, il suf­fit de créer un short­code.

Voici le short­code pour le temps de lec­ture :

function mysite_time2read_shortcode() {
  return get_post_meta(get_the_ID(), 'time_to_read', true);
}

add_shortcode('time2read', 'mysite_time2read_shortcode');

Et celui pour le nom­bre de mots :

function mysite_wordscount_shortcode() {
  return get_post_meta(get_the_ID(), 'words_count', true);
}

add_shortcode('wordscount', 'mysite_wordscount_shortcode');

Il ne vous restera plus qu’à insér­er vos short­codes dans l’ar­ti­cle, comme suit (le résul­tat ligne suiv­ante) :

Cet arti­cle prend [time2read /] min­utes à lire et com­porte [wordscount /] mots.

Cet arti­cle prend 3 min­utes à lire et com­porte 729 mots.

Et si vous ne souhaitez plus affich­er le temps de lec­ture (ou le nom­bre de mots, ou les deux) sur votre blog…

Supprimez les données

Vous pour­rez sup­primer l’en­trée cor­re­spon­dante en ajoutant tem­po­raire­ment ce bout de code dans Code Snip­pet ou — dans le pire des cas — dans le fichi­er functions.php  :

if ( get_option( 'words_count', null ) !== null )
  delete_option( 'words_count' );
if ( get_option( 'time_to_read', null ) !== null )
  delete_option( 'time_to_read' );

En fait, il suf­fit d’une seule exé­cu­tion pour sup­primer toute trace sur votre blog. Rafraîchir la page d’ac­cueil devrait suf­fire. Vous pou­vez ensuite sup­primer ce bout de code.

Et maintenant

Il ne vous reste plus qu’à tester. Peut-être cette indi­ca­tion n’est pas utile pour votre blog, vous vous en ren­drez vite compte en jetant un œil sur vos sta­tis­tiques.

3 réflexions sur “Ajoutez le temps de lecture à vos articles”

  1. Si j’ai bien com­pris com­ment faire il suf­fit d’écrire “Cet arti­cle prend [time2read /] min­utes à lire et com­porte [word­scount /] mots.” à chaque début d’ar­ti­cles une fois que l’on à créer un short­code dans l’ex­ten­sion codes snip­pets

    1. On crée une fois dans Code Snip­pets pour l’ensem­ble du blog.
      Ensuite, on ajoute le short­code dans chaque arti­cle où on veut qu’il appa­raisse, ou on mod­i­fie le mod­èle d’ar­ti­cle et on ajoute : <div>Cet article prend <?php echo do_shortcode('[time2read /]'); ?>mn à lire et contient <?php echo do_shortcode('[wordscount /]'); ?> mots.</div>

Les commentaires sont fermés.

Retour en haut
Les cookies que nous utilisons sont indispensables au bon fonctionnement de ce site. Il n'y a aucun pistage publicitaire et les données statistiques recueillies sont anonymisées.
J'ai compris