Cet article prend 4 minutes à lire et comporte 857 mots.

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

Vous avez certai­ne­ment remar­qué, en dessous du titre de chaque article, que le temps de lecture et le nombre de mots sont affi­chés.

Pourquoi avoir rajouté ces indi­ca­tions ? Il semble, d’après plusieurs blogueurs, que l’ajout de ces indi­ca­tions réduisent le taux de rebond, parfois de manière signi­fi­ca­tive.

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

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

Dans le cas présent, il sait combien de temps il va passer à la lecture de votre article, et si le nombre de mots est élevé, c’est (subjec­ti­ve­ment) un indice de qualité.

Ces données n’ont pas d’uti­lité pour un produit par exemple, l’in­té­rêt n’est pas dans le nombre de mots sur la page, ni dans le temps de lecture, mais dans le taux de conver­sion !

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

Vous trou­ve­rez des exten­sions pour le temps de lecture, mais en fait, un simple bout de code suffit, et permet plus de souplesse.

Voici comment procé­der…

Enregistrer temps de lecture et nombre de mots

Placez le bout de code suivant dans votre fichier functions.php, ou mieux, créez un nouveau 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écuté lors de l’en­re­gis­tre­ment d’un article – si vous avez plusieurs articles déjà en ligne, vous pouvez 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 modi­fi­ca­tion.

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

Mais si vous avez des centaines d’ar­ticles déjà publiés, vous pour­rez dans un premier temps créer une boucle de type foreach par exemple, l’exé­cu­ter une fois, puis la suppri­mer, plutôt que de passer 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’uti­lité et à l’uti­li­sa­tion de cette exten­sion.

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

Afficher temps de lecture et nombre de mots

Pour affi­cher ces données, il suffit 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écidé d’af­fi­cher l’in­for­ma­tion.

Mais il est aussi possible d’af­fi­cher ces données en utili­sant un short­code, voici comment faire…

Afficher avec un shortcode

Si vous souhai­tez affi­cher le temps de lecture ou le nombre de mot dans l’ar­ticle, il suffit de créer un short­code.

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 restera 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 comporte [wordscount /] mots.

Cet article prend 4 minutes à lire et comporte 857 mots.

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

Supprimez les données

Vous pour­rez suppri­mer l’en­trée corres­pon­dante en ajou­tant tempo­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 suffit d’une seule exécu­tion pour suppri­mer toute trace sur votre blog. Rafraîchir la page d’ac­cueil devrait suffire. Vous pouvez ensuite suppri­mer 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 rendrez vite compte en jetant un œil sur vos statis­tiques.

Si vous avez trouvé une faute d’orthographe, veuillez nous en infor­mer en sélec­tion­nant le texte en ques­tion et en appuyant sur Ctrl + Entrée .

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

  1. Si j’ai bien compris comment faire il suffit d’écrire « Cet article prend [time2read /] minutes à lire et comporte [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 snip­pets

    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>

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *