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’indications annexes (perti­nentes), plus l’implication 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’utilité pour un produit par exemple, l’inté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’article.

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’enregistrement 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’articles déjà publiés, vous pour­rez dans un premier temps créer une boucle de type foreach par exemple, l’exécuter une fois, puis la suppri­mer, plutôt que de passer page après page pour enre­gis­trer une ving­taine d’articles à la fois.

Pour ceux qui ne connaissent pas Code Snippets, direc­tion l’article Centralisez vos bouts de code avec « Code Snippets » où vous trou­ve­rez toutes les expli­ca­tions quant à l’utilité et à l’utilisation 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’option pour l’article 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’afficher l’information.

Mais il est aussi possible d’afficher 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’article, 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’article, 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’entré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’accueil 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 .

Ces articles vous intéresseront aussi…

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’articles une fois que l’on à créer un short­code dans l’extension codes snip­pets

    1. On crée une fois dans Code Snippets pour l’ensemble 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’article et on ajoute : <div>Cet article prend <?php echo do_shortcode('[time2read /]'); ?>mn à lire et contient <?php echo do_shortcode('[wordscount /]'); ?> mots.</div>

Répondre à Charlie Laubin Annuler la réponse

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