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­tai­ne­ment remar­qué, en des­sous du titre de chaque article, que le temps de lec­ture et le nombre de mots sont affichés.

Pourquoi avoir rajou­té ces indi­ca­tions ? Il semble, d’a­près plu­sieurs blo­gueurs, que l’a­jout de ces indi­ca­tions réduisent le taux de rebond, par­fois de manière significative.

L’internaute est un homme pres­sé — paraît-il. Sauf quand il trouve une infor­ma­tion dont il a besoin.

Les études menées par les psy­cho­logues Claude Messner et Michaela Wänke montrent que plus le lec­teur a d’in­di­ca­tions annexes (per­ti­nentes), plus l’im­pli­ca­tion est impor­tante.

Dans le cas pré­sent, il sait com­bien de temps il va pas­ser à la lec­ture de votre article, et si le nombre de mots est éle­vé, c’est (sub­jec­ti­ve­ment) un indice de qualité.

Ces don­nées n’ont pas d’u­ti­li­té pour un pro­duit par exemple, l’in­té­rêt n’est pas dans le nombre de mots sur la page, ni dans le temps de lec­ture, mais dans le taux de conversion !

Il ne va peut-être pas tout lire, mais au moins, il aura eu un aper­çu du conte­nu de l’article.

Vous trou­ve­rez des exten­sions pour le temps de lec­ture, mais en fait, un simple bout de code suf­fit, et per­met plus de souplesse.

Voici com­ment procéder…

Enregistrer temps de lecture et nombre de mots

Placez le bout de code sui­vant dans votre fichier functions.php, ou mieux, créez un nou­veau snip­pet  dans Code Snippets :

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é­cu­té lors de l’en­re­gis­tre­ment d’un article — si vous avez plu­sieurs articles déjà en ligne, vous pou­vez tous les sélec­tion­ner (par page), choi­sir Modifier dans les Actions grou­pées et Enregistrer, même sans effec­tuer la moindre modification.

C’est la méthode que j’ai choi­si pour ce site et les 10 articles pré­cé­dem­ment publiés.

Mais si vous avez des cen­taines d’ar­ticles déjà publiés, vous pour­rez dans un pre­mier temps créer une boucle de type foreach par exemple, l’exé­cu­ter une fois, puis la sup­pri­mer, plu­tôt que de pas­ser page après page pour enre­gis­trer une ving­taine d’ar­ticles à la fois.

Pour ceux qui ne connaissent pas Code Snippets, direc­tion l’ar­ticle Centralisez vos bouts de code avec « Code Snippets » où vous trou­ve­rez toutes les expli­ca­tions quant à l’u­ti­li­té et à l’u­ti­li­sa­tion de cette extension.

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

Afficher temps de lecture et nombre de mots

Pour affi­cher ces don­nées, il suf­fit de récu­pé­rer l’op­tion pour l’ar­ticle 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é­re­rez ce bout de code dans vos fichiers de modèles (single.php par exemple), là où vous avez déci­dé d’af­fi­cher l’information.

Mais il est aus­si pos­sible d’af­fi­cher ces don­nées en uti­li­sant un short­code, voi­ci com­ment faire…

Afficher avec un shortcode

Si vous sou­hai­tez affi­cher le temps de lec­ture ou le nombre de mot dans l’ar­ticle, il suf­fit de créer un shortcode.

Voici le short­code pour le temps de lecture :

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 nombre 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 res­te­ra plus qu’à insé­rer vos short­codes dans l’ar­ticle, comme suit (le résul­tat ligne suivante) :

Cet article prend [time2read /] minutes à lire et com­porte [wordscount /] mots.

Cet article prend 3 minutes à lire et com­porte 729 mots.

Et si vous ne sou­hai­tez plus affi­cher le temps de lec­ture (ou le nombre de mots, ou les deux) sur votre blog…

Supprimez les données

Vous pour­rez sup­pri­mer l’en­trée cor­res­pon­dante en ajou­tant tem­po­rai­re­ment ce bout de code dans Code Snippet ou — dans le pire des cas — dans le fichier 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­pri­mer toute trace sur votre blog. Rafraîchir la page d’ac­cueil devrait suf­fire. Vous pou­vez ensuite sup­pri­mer ce bout de code.

Et maintenant

Il ne vous reste plus qu’à tes­ter. 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 statistiques.

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 article prend [time2read /] minutes à lire et com­porte [word­scount /] mots. » à chaque début d’ar­ticles une fois que l’on à créer un short­code dans l’ex­ten­sion codes snippets

    1. On crée une fois dans Code Snippets pour l’en­semble du blog.
      Ensuite, on ajoute le short­code dans chaque article où on veut qu’il appa­raisse, ou on modi­fie le modèle d’ar­ticle 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
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept