X

Comment suivre les vues d’un article sans plugin en utilisant Post Meta

Snippets by IsItWP

Vous cherchez un moyen de suivre les affichages des articles sans plugin en utilisant post meta ? Bien qu’il y ait probablement un plugin pour cela, nous avons créé un extrait de code rapide que vous pouvez utiliser pour suivre les vues des articles sans plugin en utilisant post meta dans WordPress.

Instructions:

Ajoutez ce code au fichier functions.php de votre thème ou dans un plugin spécifique à votre site:

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';
}
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);
    }
}

// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); 

Vous pouvez également ajouter ce code à une colonne de l’administration de WordPress qui affiche les vues des articles :

// Add to a column in WP-Admin
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());
    }
}

Cette partie du code de suivi des vues définira les vues de l’article. Il suffit de placer ce code ci-dessous dans le fichier single.php à l’intérieur de la boucle WordPress.

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

Note sur la mise en cache des fragments : Si vous utilisez un plugin de mise en cache comme W3 Total Cache, la méthode ci-dessus pour définir les vues ne fonctionnera pas car la fonction setPostViews() ne s’exécutera jamais. Cependant, W3 Total Cache dispose d’une fonctionnalité appelée mise en cache des fragments. Au lieu de la méthode ci-dessus, utilisez la suivante pour que la fonction setPostViews() s’exécute parfaitement et suive toutes les vues de vos messages, même lorsque la mise en cache est activée.

<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->

Le code ci-dessous est optionnel. Utilisez ce code si vous souhaitez afficher le nombre de vues dans vos articles. Placez ce code dans la boucle.

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

Note : Si c’est la première fois que vous ajoutez des extraits de code dans WordPress, veuillez consulter notre guide sur la façon de copier/coller correctement des extraits de code dans WordPress, afin de ne pas casser accidentellement votre site.

Si vous avez aimé cet extrait de code, n’hésitez pas à consulter nos autres articles sur le site comme : 10 meilleurs plugins WordPress de témoignages et comment configurer le suivi des auteurs sur WordPress avec Google Analytics.

Commentaires   laisser une réponse

  1. Hi,

    Can I do like fake views count + real count?

    It means I can set starting value manually (because I want my new published post to show a value like 3,429 views in the first minute) so that my post will look like it has a high amount of post views, of course, combined with real count also.

    If yes, where to set the fake view count base on the code?

  2. What would be the meta key for this to call it in a query?

    1. ‘post_views_count’ is the meta key.

  3. Hi is it possible to make somehow the number of views display only if it’s more than 1000?

    1. You could use this code when displaying the comment count:

      if (getPostViews(get_the_ID()) >= 1000) {
      echo getPostViews(get_the_ID());
      }

  4. Is there a way to exclude admin views from the count?

    1. You may want to use something like this code to conditionally count views: https://www.isitwp.com/check-if-user-is-logged-in/

  5. Shubham Kumar mars 27, 2021 à 2:40 pm

    Hey Debjit Saha i can’t able to find single.php folder in my template, where should i paste the code?

    1. The main loop for single posts may be in another template file. You may want to check for a post.php file or a similarly named file.

  6. Thank you for this code. it worked perfectly.

  7. Nice snippet.
    How can I reset the counts and start counting again?

    1. If you know the post id of the posts you want then this should work.

      UPDATE yourDatabaseName.wp_postmeta
      set meta_value = 0
      where meta_key = ‘post_views_count’ and post_id = 1934

  8. Hello, very good your post.

    My question is how to bring the data from Google Analytics to show the number of views of Posts and Pages?

    Do you have a Post or a link on how to implement this?

    1. Sadly we don’t have a current recommendation for this exactly. That said, you may want to check out: https://www.monsterinsights.com/how-to-check-stats-for-individual-wordpress-posts-and-pages/

  9. Any google analytics plugin that can pull view data and display in wordpress?

    1. There are plenty… You can check out our complete list of best Google Analytics plugin.

  10. The codes are not working for me.I have bbpress topic,means post type is “topic”. But when i checked meta_key is genearting in backend. But meta values are not updating on each visits

  11. Great articles, it work fine on my page
    my question is, does the count will just start after implementing that code ?

    because all my old page showing 0 or 1 views while actually it already got thousands views.

    1. Yes, the counting doesn’t start until the plugin is active. Any views before this were not recorded by this plugin.

  12. Thanks a lot – works great!

    I’ve ‘improved’ the function get_post_views slightly so it will return the proper text depending on the number of views. Here is my version:

    function get_post_views($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 Views”;
    }
    if ($count==’1′) {
    return “1 View”;
    }
    return $count.’ Views’;
    }

    Maybe you like to adopt this version.

    1. Thanks for sharing! 🙂

  13. thanks.

  14. This has helped me a lot, thank you very much!

  15. Great! Works like charm… I only wanted to view it in the admin area and just the first two codes do the trick!

  16. Hi,

    Thanks for the code, it works like a charm without cache enabled…

    But, how can I make it work with wp rocket?

    Please…

  17. Anyone know how to format or truncate the numbers? So instead of 4445 views, it’s 4,445 or 4.5K ?

    1. You may want to use PHP functions like round() and number_format() for this use case.

  18. Hi, somehow my code runs fine but it is doing +2 increment each time, the views go 0, 2, 4, 6. Which has been annoying please help. I placed the code as well as the show post views portion both in a function that has a action after content. The counter works, just that its in multiples of 2.

    1. You may want to check to make sure that this function, setPostViews(get_the_ID()), is only added once. Which hook are you using?

  19. wil the work in lightspeed cache?

  20. Military_blogger juin 30, 2019 à 6:17 am

    Code appearing on home page

  21. Opps sorry, please disregard my previous comment. I realized I was calling the setPostViews function multiple times. My bad….

    After fixing this, I am only seeing the view count go up +2 anytime I refresh the single blog post.

    Does anyone have a fix for this? I don’t imagine this will be much of a problem considering that most users wont actually be refreshing the page, though it would be nice to have an actual count number to display..

    Thanks for the code 🙂

  22. How to making a random views count to (600,900)

    please help..

  23. how do i stop auto increase count on page refresh?

  24. Hey, really great tips. Thanks for sharing with us. I am using plugin and google analytics to track my page views.

  25. Hi,

    I want to show the count inside meta class, my meta code is:

    how to print the counter between the meta like author, date, catagories?

Ajouter un commentaire

Nous sommes heureux que vous ayez choisi de laisser un commentaire. N'oubliez pas que tous les commentaires sont modérés conformément à notre privacy policy, et que tous les liens sont en nofollow. N'utilisez PAS de mots-clés dans le champ du nom. Engageons une conversation personnelle et constructive.

WordPress Launch Checklist

L'ultime liste de contrôle pour le lancement de WordPress

Nous avons rassemblé tous les éléments essentiels de la liste de contrôle pour le lancement de votre prochain site Web WordPress dans un ebook pratique.
Oui, envoyez-moi le gratuit !