J’ai vu il y a quelques jours un site internet fournissant un petit supplément d’informations en haut de la page: le temps estimé pour lire la page. J’ai trouvé ça drôle et je voulais créer quelque chose de similaire en utilisant un WordPress petit code.

C’est assez facile à faire, alors commençons!

Étape 1: créer un plugin

Comme d’habitude, nous allons créer un plugin, donc, créez un nouveau dossier sous wp-content / plugins, et appelez-le “post-lecture-durée-shortcode“, Ouvrez-le et créez un fichier appelé”post-lecture-durée-shortcode.php«. Ouvrez le fichier et collez ce code:

<?php
/*
Plugin Name: Post Reading Duration Shortcode
Plugin URL: http://remicorson.com/
Description: Display the estimated time to read the post
Version: 0.1
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
Text Domain: rc_prds
Domain Path: languages
*/

Une fois que vous avez enregistré le fichier, vous devriez voir la liste des plugins sur la page des plugins.

Étape 2: créer le shortcode

Fondamentalement, le plugin fournira un shortcode simple sans attribut. Le texte sera encapsulé entre les balises shortcode elles-mêmes. Le shortcode affichera sur le frontend le temps dont les visiteurs ont besoin pour lire l’article. Pour créer le shortcode, utilisez ce code:

/**
 * Register the shortcode
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_prds_add_reading_duration_shortcode( $atts, $content = null ) {
    return '<span class="reading_duration">'.$content.'</span>';
}

add_shortcode("reading_duration", "rc_prds_add_reading_duration_shortcode");

Vous pouvez enregistrer le fichier. Si vous ajoutez à un article ou à une page le shortcode [reading_duration]Temps de lecture estimé: XX[/reading_duration], il doit afficher «Temps de lecture estimé: XX» encapsulé dans une balise «span».

L’étape suivante consiste à modifier le shortcode pour afficher le temps réel estimé nécessaire pour lire la page ou l’article, selon un nombre prédéfini de mots lus par minute.

Pour ce faire, nous devons faire évoluer le code court. Nous devons obtenir l’identifiant du message (pour récupérer le nombre de mots du message en utilisant str_word_count ()), et nous devons définir un certain nombre de mots que les gens lisent habituellement en une minute. Disons 200 mots par minute.

/**
 * Register the shortcode
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_prds_add_reading_duration_shortcode( $atts, $content = null ) {

    global $post;
    
    // Get Post ID
    $post_id = $post->ID;
    
    // Words read per minute (you can set your own value)
    $words_per_minute = 200;
    
    // Get estimated time
    $estimated_reading_time = rc_prds_get_post_reading_time( $post_id, $words_per_minute );
    
    return '<span class="reading_duration">'.$content.' '.$estimated_reading_time.'</span>';
}

add_shortcode("reading_duration", "rc_prds_add_reading_duration_shortcode");

Étape 3: La fonction de compteur

Comme vous pouvez le voir, il existe une fonction non définie: rc_prds_get_post_reading_time (). C’est la fonction qui renverra le temps estimé dont vous avez besoin pour lire l’article. Créons-le:

/**
 * Get post reding time
 *
 * @access      public
 * @since       1.0 
 * @return      void
*/
function rc_prds_get_post_reading_time( $post_id, $words_per_minute ){

    // Get post's words
    $content     = get_the_content( $post_id );
    $count_words = str_word_count( strip_tags( $content ) );
    
    // Get Estimated time
    $minutes = floor( $count_words / $words_per_minute);
    $seconds = floor( ($count_words / ($words_per_minute / 60) ) - ( $minutes * 60 ) );
    
    // If less than a minute
    if( $minutes < 1 ) {
        $estimated_time = __( 'Less than a minute', 'rc_prds' );
    }
    
    // If more than a minute
    if( $minutes >= 1 ) {
        if( $seconds > 0 ) {
            $estimated_time = $minutes.__( 'min', 'rc_prds' ).' '.$seconds.__( 'sec', 'rc_prds' );
        } else {
            $estimated_time = $minutes.__( 'min', 'rc_prds' );
        }
    }
    
    return $estimated_time;
}

Fondamentalement, la fonction compte le nombre de mots dans «get_the_content ()», puis compte le nombre de minutes et de secondes nécessaires pour lire le message. La dernière partie est juste un moyen simple d’afficher le message correct en fonction des valeurs de $ minutes et $ secondes.

On pourrait aller plus loin, et ajouter les heures nécessaires pour lire l’article mais je ne suis pas sûr à 100% que ce soit obligatoire!

Vous pouvez maintenant utiliser pleinement le shortcode en ajoutant simplement:

[reading_duration]Estimated Reading Time:[/reading_duration]

Share: