[WordPress] Compter et afficher les visites de chaque billet


Savoir combien de fois un billet a été vu, peut être une bonne information, que ce soit pour vous (afin de connaitre les thématiques qui intéressent vos lecteurs) ou vos visiteurs (pour connaitre les billets intéressants).

Ainsi, afficher et stocker le nombre de vues des articles est l’objet de ce billet. Je vous propose un développement pour réaliser un compteur de vues.

La première chose à faire est de créer une fonction pour stocker l’information du nombre de vues. On utilise pour cela un champ personnalisé, que l’on met à jour à chaque vue :

function setPostViews($post_ID) {
    $count_metakey = 'post_views_count';
    $views = get_post_meta($post_ID, $count_metakey, true);
    if($views==''){
        $views = 0;
        delete_post_meta($post_ID, $count_metakey);
        add_post_meta($post_ID, $count_metakey, '0');
    }else{
        $views++;
        update_post_meta($post_ID, $count_metakey, $views);
    }
}

Il faut placer cette fonction dans le fichier functions.php de votre thème.

 
Il faut ensuite placer un appel à cette fonction dans le template single.php de votre thème.

<?php setPostViews(get_the_ID()); ?>

 
Passons maintenant à l’affichage de la valeur sur vos pages. Il faut tout d’abord insérer cette fonction dans functions.php.

function getPostViews($post_ID){
    $count_metakey = 'post_views_count';
    $views = get_post_meta($post_ID, $count_metakey, true);
    if($views==''){
        delete_post_meta($post_ID, $count_metakey);
        add_post_meta($post_ID, $count_metakey, '0');
        return "0";
    }
    return $views;
}

 
Pour afficher le nombre de vues, placer le code suivant à l’endroit où vous souhaitez le voir, toujours dans le fichier single.php.

<?php echo getPostViews(get_the_ID()); ?>

Voila, un système simple et efficace. Il y a un seul problème pour les très gros sites qui utilisent un système de cache (W3 Total Cache, …).

Je travaille en ce moment sur un autre système qui récupère ses valeurs depuis Google Analytics et met à jour avec un cron pour ne pas se faire bannir. Bientôt un petit billet sur le sujet.

via