Accueil » Conseils & tutoriels sites internet » Tutoriels Wordpress » WordPress : avoir un compteur de vues intégré à son site

WordPress : avoir un compteur de vues intégré à son site

L’analyse des statistiques (vues, visites) sur son site internet en WordPress est à la fois utile mais également la pierre d’angle d’un marketing en ligne correctement orienté.

Voici comment avoir facilement et rapidement un compteur de vues sur vos articles dans votre blog WordPress autohébergé.

1/ Les visites et les vues

Il est nécessaire de bien différencier les visites des vues. 

Une visite est une personne regardant une page. Le compteur de vues ici présent permet de compter le nombre de fois que la page a été initiée. Ainsi, on ne comptabilise pas le nombre de visiteurs, car le même visiteur peut revenir plusieurs fois sur la page.

Cela signifie donc que ce compteur comptabilisera également chaque chargement de page par le même utilisateur. Si une seule et même personne accède trois fois à l’article dans la journée, le compteur sera incrémenté de trois.

2/ le compteur de vues

a/ Child theme

A moins que vous n’ayez développé votre propre thème, il est encore nécessaire de pouvoir ajouter ou modifier des fonctions, ce qui contraint à passer par un functions.php. En conséquent, vous devez impérativement disposer d’un thème enfant si vous n’en avez pas un sur mesure.

Si vous n’en disposez pas, cliquez ici pour voir le tutoriel expliquant la création d’un child theme.

b/ Functions

En premier lieu, travaillons sur le back-office. 

L’idée est d’afficher via les postmetas les vues associées article par article. Un getter est donc requis, et nous allons mettre en place un setter (qui sera rajouté dans un des fichiers du thème)

/**
 * Compteur de vues
 * @author Team Ever
 * @see https://www.team-ever.com/wordpress-avoir-un-compteur-de-vues-integre-a-son-site/
 */
//Getter
function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}
//Setter
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
    $defaults['post-views'] = __('Views');
    return $defaults;
}
function posts_custom_column_views($column_name, $id){
        if($column_name === 'post-views'){
        echo getPostViews(get_the_ID());
    }
}
//Sort by post-views in admin
add_filter( 'manage_edit-post_sortable_columns', 'sort_by_views_column' );
function sort_by_views_column( $columns ) {
    $columns['post-views'] = 'post-views';
    return $columns;
}
add_action( 'pre_get_posts', 'post_views_orderby' );
function post_views_orderby( $query ) {
    if( ! is_admin() )
        return;
 
    $orderby = $query->get( 'orderby');
 
    if( 'post-views' == $orderby ) {
        $query->set('meta_key','post_views_count');
        $query->set('orderby','meta_value_num');
    }
}

c/ Modification du thème

A présent que nous pouvons comptabiliser les vues, il nous faut un déclencheur sur les articles, à savoir au chargement d’un article, quel qu’il soit.

Au sein de votre thème parent, repérez le fichier content-single.php, lequel contiendra l’affichage d’un article en particulier. Comme la fonction setPostViews() est désormais accessible, vous n’avez plus qu’à ajouter ceci :

setPostViews(get_the_ID());

Où get_the_ID() récupère tout simplement l’ID de l’article en cours. setPostViews() quant à lui se contentera d’incrémenter la valeur des vues pour l’article en cours, en tant que meta_value.

N’oubliez pas de bien conserver votre child theme propre et rangé !

Imprimer Imprimer
Suivre Cyssoo:

Développeur - formateur

Je cherche à display errors le monde, vous auriez pas la doc' ? Follow me on Twitter !

2 Responses

  1. Jean-Pierre
    | Répondre

    Bonjour, d’abord merci pour ce compteur « sans plugin ».
    Je l’utilise sur mon site, ça fonctionne très bien, même pour les produits Woocommerce( je présume que c’est logique, puisque ce sont des « articles »), par contre j’ai essayé de l’adapter pour les pages…mais rien à faire…
    Avez-vous une idée ?
    Merci.

    • Cyril CHALAMON
      | Répondre

      Bonjour,
      Il faudrait regarder dans votre thème si vous n’avez pas par hasard un hook pour les pages. Vous pourriez par exemple essayer ceci :

      add_action('wp_head', 'page_view');
      function page_view() {
          setPostViews(get_the_ID());
      }
      

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.