Si vous avez déjà fait défiler au bas de l’un de nos articles, vous avez probablement remarqué notre widget « Populaire sur WPBeginner en ce moment ! ». Cette fonctionnalité a été un succès auprès de nos lecteurs, les aidant à découvrir notre contenu le plus précieux et les encourageant à explorer davantage notre site.
En mettant en avant vos publications de blog WordPress les plus populaires, vous n’aidez pas seulement les lecteurs à trouver votre meilleur contenu – vous stimulez également les métriques d’engagement de votre site. C’est gagnant-gagnant : les internautes obtiennent du contenu de qualité, et vous les gardez sur votre site plus longtemps.
Dans cet article, nous allons voir comment afficher facilement vos publications les plus populaires en fonction de leurs vues dans WordPress.
Pourquoi afficher les publications les plus populaires en fonction des vues dans WordPress ?
Lorsque les utilisateurs/utilisatrices voient vos publications de blog WordPress les plus populaires, ils peuvent découvrir le contenu que leurs collègues lecteurs apprécient le plus. Ils peuvent ainsi consulter ces articles et participer à la conversation.
De plus, l’affichage de vos contenus les plus populaires dans WordPress peut renforcer votre preuve sociale. C’est comme si vous disiez aux utilisateurs nouveaux/utilisatrices : « Hé, d’autres personnes ont trouvé ces publications vraiment utiles, et vous pourriez en faire autant ! ».
Enfin, afficher vos publications de blog en vogue peut inciter les internautes à rester plus longtemps sur votre site, ce qui augmente le nombre de pages vues et réduit votre taux de rebond.
Plus l’engagement de vos utilisateurs/utilisatrices augmente, plus Google pense que votre contenu est bon et important. À son tour, votre référencement WordPress s’améliore et votre site peut se classer plus haut.
Malheureusement, WordPress n’a pas de fonctionnalité ou de bloc intégré pour afficher vos publications les plus populaires en fonction des pages vues. Dans ce guide, nous allons vous afficher comment faire exactement cela avec une extension et avec du code.
Il vous suffit de cliquer sur l’un des liens ci-dessous pour accéder directement à votre méthode préférée :
Méthode 1 : Afficher les publications populaires de WordPress en fonction des vues avec MonsterInsights (Recommandé)
La façon la plus simple d’afficher les publications populaires en fonction des vues dans WordPress est d’utiliser une extension. Il existe en fait de nombreuses extensions WordPress pour les publications populaires, mais à notre avis, le meilleur choix est MonsterInsights.
Utilisé par plus de 3 millions de sites dans le monde, MonsterInsights est la meilleure extension Google Analytics pour WordPress. Bien que sa fonctionnalité principale soit les Statistiques, il dispose également d’une fonctionnalité simple/simple d’utilisation pour afficher vos publications les plus populaires.
Avant toute chose, vous devrez installer l’extension MonsterInsights et la connecter à votre compte Google Analytics. Pour plus de détails, consultez notre guide étape par étape sur l ‘installation de Google Analytics sur WordPress pour les débutants.
Note : Bien qu’une version gratuite de MonsterInsights soit disponible, nous utiliserons la version Pro car elle inclut la mis en avant des publications populaires.
Choisissez un thème pour lewidget des publications populaires
Une fois que vous avez activé et défini l’extension, accédez à Insights » Popular Posts à partir du tableau de bord WordPress. Ensuite, cliquez sur l’article de menu » Popular Posts Widget « .
En défilant vers le bas, vous devrez sélectionner un thème pour afficher le widget des publications populaires. Il existe plusieurs options.
Certains incluent une image mise en avant pour la publication, tandis que d’autres ont une apparence plus minimale.
Si vous souhaitez voir à quoi ressemble le thème avant de faire votre choix, il vous suffit de descendre dans la page jusqu’à la section Prévisualisation du thème.
Vous pouvez également prévisualiser le thème dans un format large ou étroit. Avec le format Wide, vous verrez vos publications listées sous le contenu de la page ou de la publication, tandis que le format Narrow affiche les publications sur le côté droit de celle-ci, comme une colonne latérale.
Ensuite, défilons vers le bas jusqu’à la section » Personnaliser le design « . Ici, vous pouvez modifier les couleurs du thème, la taille de la police, la mise en page et le nombre de publications à afficher.
Les options de personnalisation ici peuvent varier en fonction du thème que vous utilisez. Confirmez donc que vous pouvez explorer les différents thèmes pour voir celui qui vous convient le mieux.
Configurer le comportement du widget des publications populaires
Une fois que vous avez configuré le design du thème, vous devez vous rendre dans la section Comportement. C’est ici que vous contrôlerez la façon dont le widget des publications populaires apparaîtra sur votre site WordPress.
Dans les Réglages du style du widget, vous pouvez choisir d’utiliser le design que vous avez fait ci-dessus ou d’opter pour ne pas styliser le widget du tout. Avec la deuxième option, le widget suivra le CSS du thème de votre site WordPress.
Ensuite, vous pouvez choisir comment le widget doit choisir vos publications les plus populaires. Pour ce tutoriel, choisissez » Personnalisé « , mais vous pouvez également afficher les publications les plus populaires en fonction du nombre de commentaires.
Ce que vous devez faire ensuite, c’est activer l’option » Ajouter les 5 meilleures publications à partir de Google Analytics » ci-dessous. Mais avant cela, vous aurez besoin du module complémentaire Dimensions personnalisées de MonsterInsights et d’ajouter le type de publication en tant que nouvelle dimension personnalisée.
Cela permettra à MonsterInsights de choisir les publications les plus populaires sur la base des données de Google Analytics.
Pour ce faire, vous devez télécharger le module complémentaire MonsterInsights Dimensions et l’installer en tant qu’extension dans WordPress. Pour obtenir des instructions étape par étape, consultez notre guide sur l’installation d’une extension WordPress.
Ensuite, allez dans Insights « Réglages et passez à l’onglet » Conversions « . Cliquez ensuite sur » Ajouter une nouvelle dimension personnalisée « .
Sélectionnez ensuite « Type de publication » dans le menu déroulant.
Cela permettra à MonsterInsights de suivre les performances de vos articles de blog et autres types de publication personnalisés.
Il vous suffit maintenant de retourner dans Insights » Popular Posts et d’aller dans ‘Popular Posts Widget’.
Il suffit d’activer le bouton de permutation » Ajouter les 5 meilleures publications de Google Analytics « . Cliquez ensuite sur « Tester les publications automatisées » pour vérifier que la configuration a bien été effectuée.
Si c’est le cas, vous verrez apparaître une fenêtre surgissante contenant un message de réussite.
Il doit indiquer : « Les données des Popular Posts peuvent être récupérées correctement. Veuillez noter : selon la date à laquelle vous avez configuré les paramètres des Dimensions personnalisées, il peut s’écouler jusqu’à 7 jours avant que les données des Popular Posts ne soient chargées à partir de Google Analytics.
En passant aux étapes suivantes, vous pouvez maintenant ajouter un titre qui apparaîtra au-dessus du widget. Il peut s’agir de quelque chose comme » Consultez nos publications les plus populaires » ou quelque chose de similaire.
En dessous, vous pouvez choisir si le widget doit être affiché dans tous les types de publication, être exclu de certaines publications et/ou apparaître uniquement dans certaines catégories de publications.
Ces réglages sont utiles si vous avez créé des types de publication personnalisés autres que les articles de blog et que vous avez l’impression que le widget des publications populaires n’y sera pas pertinent.
L’une des dernières étapes consiste à embarquer le widget des publications populaires. Il existe plusieurs options : le placer automatiquement, utiliser un bloc Gutenberg, l’ajouter en tant que widget de la colonne latérale ou utiliser un code court.
Examinons chaque option l’une après l’autre.
Embarquer automatiquement le widget des publications les plus populaires
Le placement automatique est recommandé si vous souhaitez que le widget s’affiche sur toutes les publications qui correspondent aux paramètres de comportement que vous avez définis précédemment.
Pour cela, il suffit d’activer le bouton Placement automatique.
L’inconvénient de cette option est que vous ne pouvez pas ajuster le design du widget en fonction de ce qui convient le mieux à la publication ou à la page. Si vous avez besoin de ce type de fonctionnalité, vous pouvez essayer la méthode suivante.
Contenu embarqué du bloc des publications populaires dans une page ou un message
Si vous souhaitez avoir plus de contrôle sur l’apparence du widget sur une page ou une publication, cette méthode est faite pour vous.
Tout d’abord, allez dans l’éditeur de blocs de la publication ou de la page où vous voulez que le widget soit. Ensuite, cliquez sur le bouton d’ajout de bloc « + » n’importe où dans l’éditeur et recherchez le bloc Articles populaires.
Dans le panneau des Réglages du widget, vous verrez qu’il y a des options pour modifier le thème du widget, la taille de la police, les couleurs, le titre, la mise en page et le nombre de publications.
Ces réglages sont similaires à ceux que nous avons vus dans l’extension MonsterInsights.
La seule modification réside dans le fait que vous ne pouvez pas modifier les publications sélectionnées dans le widget.
Cela dit, dans les Réglages du comportement, il est possible d’afficher uniquement les publications de certaines catégories. De cette façon, vous pouvez faire en sorte que les choix de publications populaires soient plus adaptés à vos besoins.
Une fois que vous êtes satisfait des réglages du bloc, il vous suffit de cliquer sur le bouton « Mettre à jour » dans les éditeurs/éditrices de publications et de pages.
Voici à quoi ressemble le bloc « Publications populaires » sur notre site de test :
Contenu embarqué du widget Popular Posts dans une colonne latérale
Si vous utilisez un thème WordPress non bloqué qui dispose d’une zone de colonne latérale prête à accueillir des widgets, alors vous pouvez y ajouter le widget Articles populaires. C’est ce que nous avons fait dans notre article comment ajouter des publications mises en avant dans votre colonne latérale WordPress.
Il vous suffit de vous rendre dans Apparence » Widgets. Ensuite, cliquez sur le bouton d’ajout de widget » + » dans la zone de la colonne latérale et recherchez le widget Popular Posts – MonsterInsights.
Comme dans la méthode précédente, le widget comprend des réglages similaires pour personnaliser l’apparence de votre thème.
Ce qui est différent, c’est que l’interface est légèrement plus difficile à utiliser. Lorsque vous modifiez les réglages, vous ne pouvez pas voir à quoi ressemble réellement le widget. Vous devrez cliquer sur un autre widget ou sur une autre zone pour en avoir un aperçu.
Si vous êtes satisfait de l’aspect du widget, cliquez sur « Mettre à jour » dans le coin supérieur droit.
Confirmez-vous sur votre site pour vérifier si la colonne latérale a l’air correcte.
Voici à quoi ressemble le nôtre :
Si vous souhaitez que le widget Articles populaires apparaisse uniquement sur des pages spécifiques, alors vous pouvez lire notre guide sur la façon d’afficher ou de masquer les widgets sur certaines pages WordPress.
Contenu embarqué du widget Popular Posts avec un code court
La dernière option consiste à utiliser un code court. Cette méthode est recommandée si les options ci-dessus ne fonctionnent pas pour votre cas d’utilisation spécifique.
Dans l’onglet Popular Posts Widget, défilez jusqu’à la section ‘Contenu embarqué Options’. Choisissez ensuite « Afficher à l’aide d’un code court » et cliquez sur le bouton « Copier le code court ».
Après cela, il suffit de placer le code court où vous le souhaitez. En savoir plus, consultez notre guide sur l’ajout de codes courts dans WordPress.
Méthode 2 : Afficher les publications populaires de WordPress par vues avec du code (plus avancé)
La méthode MonsterInsights est le moyen le plus simple d’afficher vos contenus les plus populaires et les meilleurs en fonction des vues dans WordPress. Mais si vous êtes à l’aise avec le codage, alors vous pouvez également utiliser du code pour afficher vos publications WordPress les plus populaires.
Pour cette méthode, nous vous recommandons d’utiliser une extension d’extraits de code comme WPCode, c’est ce que nous utiliserons dans ce guide.
WPCode permet d’insérer en toute sécurité du code personnalisé sans interagir directement avec vos fichiers WordPress. De plus, comme cette méthode nécessite l’utilisation de plusieurs extraits de code, l’extension rendra la gestion et le suivi de tous ces extraits beaucoup plus facile.
Tout d’abord, vous devez installer WPCode dans WordPress. Une version gratuite de WPCode est disponible, mais nous utiliserons la version Pro, car elle est livrée avec les fonctionnalités dont nous avons besoin pour insérer le code aux bons endroits.
Pour un guide d’installation étape par étape, consultez notre article sur l ‘installation d’une extension WordPress.
Ajouter la fonction compteur de vues des publications WordPress
Après l’activation de l’extension, vous devez vous rendre dans Code Snippets » + Add Snippet depuis le tableau de bord. Ensuite, survolez » Ajouter votre code personnalisé (nouvel extrait) » et cliquez sur » + Ajouter un extrait personnalisé « .
Vous êtes maintenant dans l’éditeur/éditrices d’extraits de code de WPCode. Avant d’insérer du code, ajoutez un titre à l’extrait.
Pour ce premier code, vous pouvez le nommer quelque chose comme « WordPress Post Views Counter Function ». En effet, le but de ce premier code est de créer une fonction pour compter les vues des publications dans WordPress.
Modifiez ensuite le type de code en « Extrait de code PHP ». Notez que tous les extraits de code que vous aurez à ajouter à partir de cet article sont en PHP.
Ensuite, vous pouvez copier et coller le code suivant ci-dessous :
function wpb_set_post_views($postID) {
$count_key = 'wpb_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);
}
}
//Get rid of prefetching to keep the count accurate
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
Défilez ensuite vers le bas jusqu’à la section « Insertion » et sélectionnez « Insertion automatique » pour la méthode d’insertion et « Exécuter partout » pour l’Emplacement. Cela fonctionne de la même manière que l’insertion du code dans le fichier functions.php de votre thème.
Ensuite, naviguez vers le côté supérieur droit de la page et rendez le code actif.
Cliquez ensuite sur « Enregistrer l’extrait ».
À ce stade, vous devez ajouter un autre nouvel extrait de code personnalisé. Vous pouvez nommer celui-ci « Appel de la fonction de suivi des vues des publications ».
Ce code appellera la fonction ci-dessus et l’activera sur vos pages de publication unique.
Une fois cela fait, copiez et collez l’extrait suivant:
wpb_set_post_views(get_the_ID());
Ce qui est différent dans cet extrait de code, c’est que vous choisirez l’Emplacement « Insert After Post » (Insérer après la publication) parce qu’il est censé s’exécuter sur vos pages de publication unique.
Lorsque vous avez terminé, il vous suffit d’activer le code et de l’enregistrer.
Insérer un crochet de suivi des vues des publications WordPress
Vous devez maintenant ajouter un nouvel extrait de code qui vérifie si la page actuelle est une publication unique. Si c’est le cas, il appellera la fonction WordPress Post Views Counter pour suivre et mettre à jour le nombre de vues de la publication.
Ainsi, chaque fois qu’un compte utilisateur visite la publication, le nombre de vues est mis à jour.
Nommons cet extrait « Crochet de suivi des vues des articles WordPress ». Insérez ensuite les lignes de code suivantes :
function wpb_track_post_views ($post_id) {
if ( !is_single() ) return;
if ( empty ( $post_id) ) {
global $post;
$post_id = $post->ID;
}
wpb_set_post_views($post_id);
}
add_action( 'wp_head', 'wpb_track_post_views');
Vous pouvez choisir la méthode d’insertion comme « Insertion automatique » et l’Emplacement comme « Interface publique uniquement ».
Comme pour les étapes précédentes, il suffit d’activer le code et d’enregistrer l’extrait.
Note : Si vous utilisez une extension de mise en cache, il se peut que cette technique ne fonctionne pas par défaut. Vous pouvez utiliser la fonctionnalité de mise en cache des fragments proposée par certaines extensions de mise en cache comme W3 Total Cache pour la faire fonctionner.
Ajout de fonctions pour récupérer le nombre de vues des publications et afficher les publications les plus populaires avec le nombre de vues
Nous en sommes maintenant aux dernières étapes de ce guide. Vous devez ajouter un extrait de code qui récupère et met en forme le nombre de vues pour une publication WordPress donnée. Cela sera utile ultérieurement lors de l’affichage de la liste des publications les plus vues.
Vous pouvez nommer ce code « Retrieve Post Views Count Function » et définir l’emplacement sur « Run Everywhere ».
Voici l’extrait de code :
function wpb_get_post_views($postID){
$count_key = 'wpb_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';
}
Confirmez une nouvelle fois que le code est activé dans WPCode et que vous l’enregistrez ensuite.
Une fois que vous avez fait cela, créez à nouveau un nouvel extrait de code et nommez-le » Display Most Popular Posts with View Counts » (Afficher les publications les plus populaires avec le nombre de vues). Il s’agit du code qui affichera vos publications les plus populaires en bas de vos articles de blog.
Dans la boîte de Prévisualisation du code, insérez l’extrait suivant :
// Customize the query parameters as needed
$popularpost = new WP_Query( array(
'posts_per_page' => 3, // Feel free to adjust the number of posts to display
'meta_key' => 'wpb_post_views_count',
'orderby' => 'meta_value_num',
'order' => 'DESC'
));
?>
<div class="popular-posts">
<h2>See Our Most Popular Posts</h2> <!-- Feel free to customize the title -->
<ul>
<?php while ( $popularpost->have_posts() ) : $popularpost->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
- <?php echo wpb_get_post_views(get_the_ID()); ?>
</li>
<?php endwhile; ?>
</ul>
</div>
<?php wp_reset_postdata();
Comme indiqué dans le code, n’hésitez pas à ajuster le nombre de publications à afficher et à personnaliser le titre de cette section.
Dans la section Insertion du code WPCode, assurez-vous de sélectionner « Insérer après la publication » pour l’Emplacement. Il suffit ensuite d’activer le code et d’enregistrer l’extrait.
Il ne reste plus qu’à visiter l’une des publications de votre blog et à voir si le code fonctionne. Voici à quoi ressemblent les publications les plus populaires par section de vues sur notre blog WordPress de test :
Conseil d’expert : Si vous souhaitez personnaliser davantage le code mais que vous n’avez pas d’expérience en matière de codage, vous pouvez utiliser le générateur de code AI de WPCode pour vous aider. Cette fonction peut modifier votre code existant pour répondre à vos besoins exacts.
En savoir plus, consultez notre évaluation complète de WPCode.
Tutoriel vidéo
Si vous préférez les instructions visuelles, veuillez regarder la version vidéo de ce tutoriel ci-dessous :
Nous espérons que ce tutoriel WordPress vous a aidé à apprendre comment afficher les publications populaires en fonction des vues. Vous pouvez également consulter notre choix d’experts des meilleures extensions de publications liées pour WordPress et notre article sur ce qui fait une page d’atterrissage à fort taux de conversion.
Si vous avez aimé cet article, veuillez alors vous abonner à notre chaîne YouTube pour obtenir des tutoriels vidéo sur WordPress. Vous pouvez également nous trouver sur Twitter et Facebook.
Bigdragon13th
Hello,
I’ve using this code for months and it’s work greats! That’s until I start using W3 Total Cache and this code stop count views for me.
I’m struck at where do I need to put the mfunc to let the code work with cache. Can you point that out?
FYI, I put all the code in a site-specific plugin.
AJ
Hell this is great! How would I display the view count outside of the post loop like in the sidebar?
leslie
hello, I have some problem on how setting up like when the login user won’t include on the count while viewing any pages?? how to do that.. please need some help on these. thanks
Sarah
Hey there, thanks for this. REALLY helpful!! Would you know how to apply a time range to this code? For example to show the most popular posts in the last day, week or month etc? I know there are plugins for this but I would like to do it without one
Dale Knight
Great!
Denis
Hello,
thanks for this nice tutorial. It works on my page!
– how can I exclude robots and spiders that hit my posts?
– May be I can set a timer of 10 seconds. after that the count should rise. So the people who only click thourgh the posts are not counted.
Cheers,
Denis
Sarah
You have no idea how much time you saved me. Thank you, works perfectly!
Clay Hickman
Thanks for the tip. Will use.
Jenni B
Hello – thanks so much for this! I noticed the question regarding the W3TC workaround, but have a slightly different question: does that still apply if I’m hooking into wp_head from functions.php, and if so, how exactly do I implement it there? Thank you!
rafi
this is really easy and very helpful! thanks man!
Kosmos
Hello, thanks for this snippet.
I have a problem, the orderby don’t work. I have five posts :
– Post 1 : 85 views
– Post 2 : 35 views
– Post 3 : 165 views
– Post 4 : 1 view
– Post 5 : 1 view
When i displayed it the order was : 1, 2, 4, 5 and 3
Do you have an idea please ?
Raj
It might be integer type issue ..
Iftekhar
following your article I am using post view count in my site since 6 months. It was working fine, but recently I am having problem with this. If a visitor view a post the count is increasing by 1 but the problem is the count is increasing in all other posts. I have w3 total installed and I m using mfunc according to your article. Please help me if you have any idea about this issue… Thanks.
WPBeginner Support
Iftekhar can you check what happens when you turn off w3 total cache?
Administrateur
Iftekhar
The problem seems to w3. Post view count is OK since deactivated. But I want to use both of them
ivan
Hello,
I am wanting to switch from using the plugin because it doesn’t support the polylang language (the author’s not getting back to me and I don’t really know if it’s possible to filter functions for the plugin..)
Two questions:
– I examined the code a bit and I’m not sure if this code starts counting posts from when it’s implemented? Or does it somehow retrieve where the post counts are currently?
– The current code on this website uses the get_posts() function so it creates an args array instead of using WP_Query(). Is this the same thing? I’m guessing not. And if it isn’t is the code below correct to get the array? I tried implementing this but it didn’t seem to work.
$args = array( ‘meta_key’ => ‘wpb_post_views_count’, ‘orderby’ => ‘meta_value_num’, ‘order’ => ‘DESC’,’numberposts’ => 6, ‘post_status’=> »publish »,’post_type’=> »post »,’lang’ => ‘en’);
thanks!
Tomas
This approach is very basic. If you want to count clicks from the same user (same IP) only every 5 minutes or 10 minutes etc. you need to have a separate table for that and before adding a new row in db you need to check the ip and time. If there is a record saved 3 minutes ago, the click is not added. Otherwise, it is added. Also this aproach allows you to create custom list of most viewed articles in 7 dyas, month, all time etc. Or even by category, user etc. (if you store appropriate values in appropriate table columns.
boson
i am trying .. when you say put code wpb_set_post_views(get_the_ID()); inside of single post loop, does that mean use this code inside of the theme single.php anywhere?
thank you for your help
WPBeginner Support
No it means paste the code inside the loop between
1-click Use in WordPress
and
1-click Use in WordPress
Administrateur
Cory Dobson
Is there a way of restricting when the post views are collected from? For example, I am looking to display the posts with the most views in the last 24 hours, how would you do something like that using this code?
Great post by the way, really helpful!
igor
how can I paginate the results.
10 results by page lets say
Mark
What if your single-xxxx.php doesn’t use the loop but custom fields. How can I use this code if I don’t use the loop?
WPBeginner Support
single-xyz.php means that file is used for a single post with xyz slug. You can still add the last code snippet in your template just where you think that the template ends displaying content.
Administrateur
quocminh86
comment policy,
Dusan
I’m confused as to where to put the mfunc code?
WPBeginner Support
If you are using W3 Total Cache then you can add this code just before wpb_get_post_views(get_the_ID()); in your templates where you want to display the popular posts. The purpose of this code is to allow W3 Total Cache to dynamically display popular posts and not cache it.
Administrateur
Waqas Munir
Dear, i am really confused about that… I am trying to add this to my blog, but I have no experience in all this.
WPBeginner Support
Then perhaps you should try using WordPress Popular Posts plugin instead.
Administrateur
Aleksander
What about using update_post_meta function instead of delete_post_meta and add_post_meta ?
George
Thanks for this post! Really really good.
I’ve two question:
1. Is there any possibility to count just one visit for each IP adress? How?.
2. Can i show the most popular posts by a specific period of time? For example, most visited posts this month, or the most popular posts from 1 of may to 1 of june…
Thank you!
Igor Gumush
thanks , working great
shishir umrao
Hi,
This code is working but whenever i reload the page , it is adding « 2 » to the total page count. For example if page count is 14 and after reloading total page count is 16 … can anyone guess where’s the problem ?
Shishir Umrao
Editorial Staff
Its happening because the function is loading twice somehow.
Administrateur
shishir umrao
Yeah. I figured out this piece of code was responsible for this.
Nick
Very useful post, I managed to make my Tag pages to order posts by a custom field value similar to post view count, however, I ave pagination on my tag pages and it keeps showing the same top ranking posts on all pages, even after I have removed this code:
‘posts_per_page’ => 4,
How do I fix the pagination so it show other posts on subsequent Tag pages?
Chris
How did you manage to make your Tag pages order posts by a custom field value similar to post view count?
It looks like the popular posts plugin only takes categories as a parameter.
Mike
Thanks for the very detailed instructions. Will using this to display the most popular posts cause a lot of additional server load if a site has significant traffic? Some of the WP plugins for this sort of thing tend to have this problem.
Editorial Staff
How much is significant traffic? We’re using it on WPBeginner.
Administrateur
Ryan Karpeles
Uh, awesome! Just awesome. THANK YOU for this!!! Works perfectly!
Lowell
I’m still learning this stuff so pardon my ignorance.
How do you allow the user to choose between queries like they do on codecanyon when they allow you to sort by price, sales, date etc.?
Thanks so much.
saeed
How can I change number of popular posts that display?
Editorial Staff
Change the posts_per_page to whatever number you like.
Administrateur
Adam Davies
Thank you so much for this. Life saver and a great tip that I definitely will be using more often.
Md. Ariful Islam
Hey, Really , Many Many thanks for this useful tips. I am highly glad to you.
Ar Ya
Hi , that’s great !
But ‘orderby’ => ‘wpb_post_views_count meta_value_num’ not working.
please use : ‘orderby’ => ‘meta_value_num’
thnx
nick
Thanks, it works for me, just with one important exception – popular posts are not as links, just their titles. How can I fix this, please?
Preston
I added this code in the manner described in the article and upon activation, I saw this….
The plugin generated 2 characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.
Preston
Fixed. I did two things:
1. Switched my permalink structure to a custom structure /%category%/%postname%/
2. Check through all of my pages for extra spaces.
One of them worked.
…go figure
Preston
Jose Vega
Hi, I think it´s necesary add – wp_reset_query(); – at the end of the query to destroys the previous query used on a custom Loop.
I hope It helps somebody.
Jon Edwards
I have this working to 95% using a custom WP Query to display popular posts from each category.
The only bit not working for me is the order – mine won’t display in descending order of views.
Cameron
Thanks for the post! This really helped.
I’m not sure if anyone else ran into this issue, but when you set up the arguments for WP_Query, you have orderby => ‘wpb_post_views_count’. This was a problem for me because I wasn’t sure how it was ordering my posts. In the codex it says that if your using numbers they will only sort by the first digit. To fix this, you can simply replace the ‘wpb_post_views_count’ with ‘meta_value_num’. This basically will tell the query to reach inside the post’s meta value and probably cast it to an integer before it sorts. Hope this helps anyone running into the same issues.
Overall, it works great! I have the 4 most popular posts in a slider on the home page. Thanks again!
Editorial Staff
Good suggestion. Updated the article with this.
Administrateur
efishinsea
Hi. Your code sample up top is *not * updated.
Instead of this:
‘orderby’ => ‘wpb_post_views_count meta_value_num’
you should have this as suggested :
‘orderby’ => ‘meta_value_num’
if you want to sort by « Most to Least »
Minh
Why it only shows posts which have count view < 100?
Editorial Staff
If you are using a caching plugin, then it doesn’t always update.
Administrateur
George
Thanks for the tutorial. How do you exclude current posts from displaying?
Kris
This looks great on my home page but it seem to want to display on my single.php or anywhere else on my site. I tried creating a sidebar-single.php and inserting the code but still no luck. Any idea why it wouldn’t work on other areas my theme?
Kris
i got it working. Thanks for this.
Anderson
Dont work, its show randomic posts :S and i use post_type = > ‘post-type-name’
Mody
This usually happens when meta key wpb_post_views_count is not available for posts, make sure you add the function that tracks views within wp while loop, otherwise it will keep showing random posts.
– Mody
Bent
Hello,
I’m using your code for track post view in the wordpress theme.
function wpb_get_post_views($postID){
$count_key = ‘wpb_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’;
}
The problem is that when I use W3 Total Cache the track view is not working right.
Is there a way in the W3 Total Cache’s Options to put ignore only on this function, but in the same time I want the code to work with W3 Total Cache?
Thank you!
Editorial Staff
Read the article again. We have already covered this « Fragmented Caching ».
Vaibhav
Hello
i followed your tutorials and have done exactly what u said.
i also added ur snippet
php query_posts(‘meta_key=post_views_count&orderby=meta_value_num&order=DESC’);
in index.php
i am facing a little error,
i am using infinite scrolling
when i put this snippet in index.php
the infinite scroll instead of loading next set of post
loads the same sets of post
For better Understanding u can check it live here
blog.newgags,com
Henry
For some reason my post views are incrementing by 2 on each page refresh. What could be happening there?
Henry
I do apologise. I had added the tracker to both the WP header and also to the single post body. Very stupid on my part :}
Nice tutorial, very easy to follow.
Brandon
First of all thanks for this post. Second I have been using this script for a few days now and for some reason it started out fine and now it is not displaying the most viewed posts, I don’t see any rhyme or reason to what posts are now being displayed. The last I checked the post that it is displaying at the top has 8 page views. I know there are posts with 25+ recorded page views. I would like to figure this out. Can you possibly point me in the right direction. I followed this post word for word. The post views are being recorded properly.
Editorial Staff
Not sure what could be going wrong. The WP_Query is suppose to list the posts with the highest counts first.
Administrateur
Einar Ólafsson
Hi. This works grade up until the view count gets over 999. All post with more view counts than 999 are not displayed, the query never post them. The latest post is the one with exactly 999 and the rest are under that. I have over 100 post that have more than thousand and are not being included.
Editorial Staff
Interesting. We have posts with over 10k views and it seems to be working just fine.
Administrateur
Martinbeasnunez
Guys you rockkk
Quick question:
If i have add a custom post type in your code ?
(popular post from especific custom post type)
Regards (:
Editorial Staff
This should work with CPTs as well.
Administrateur
Artem Russakovskii
This is a good basic tutorial, but be warned: it’s not going to work if you use caching strategies that bypass PHP (like wp-supercache, W3TC, nginx/varnish, etc). The only way to count those would be via Javascript or log parsing.
Editorial Staff
Hey Artem, Thanks for dropping by. Actually using W3 Total Cache, you can use fragment caching and it works just fine. Going to update the article for those who are using the caching plugin.
Administrateur
Artem Russakovskii
Interesting. However, I run nginx in front of W3TC, and it does a whole lot of its own caching, so it’s always safer/more reliable to use an AJAX approach. Nice info on the fragment caching though, I had no idea W3TC had it.
Ramon Fincken
Why use
//To keep the count accurate, lets get rid of prefetching
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0); ?
if you can use the main loop or the footer ?
Editorial Staff
Some browsers prefetch the rel links with the next value. So technically when a user views one post, it can act as if they had viewed both posts. This will cause inaccurate count. If you like inflated views, then don’t take it off.
Administrateur
Nino Blasco
Great article! Explanation useful and easy to understand.
Thank you.
Connor Crosby
Yay! A tutorial that doesn’t require a plugin!
Editorial Staff
Yeah we try to balance things out for our audience. This was requested by the users, and we were using it on our own site.
Administrateur
Zach
Please stop saying stuff like this. Plugins aren’t bad, it’s articles like this that make them look bad. Enough articles have come out over the past few weeks to fully explain this – it’s getting a little embarrassing.
Editorial Staff
How would you suggest titling future posts instead? DIY prefix? These are different then just using a pre-made plugin. Also, if you read the article, there is no where in our article that we say « plugins are bad ». We clearly state that the only reason why coded this was to get more customization. It is up to a user to take either stance. Some can think that plugins are bad… whereas others like yourself can think that we are saying that plugins are bad…
Zach
I don’t think any type of prefix is needed. It’s one of the great/scary things about WordPress. You COULD put this code in your theme, but then begs the argument about needing to either, 1) Loose those customizations when you change your theme, or 2) have the knowledge to properly pull those over to another theme.
A lot of the users here are beginners (hence the point of this site), so many will just copy/paste what you give them. WP Beginner is obviously a fantastic resource (reason why I follow you on Twitter), but you have a responsibility to not put a false notion about how plugins/themes work.
Correct, you don’t flat out say, « Plugins are bad, put this in your theme instead! », but the original commenter to the thread I replied to, said, « Yay! A tutorial that doesn’t require a plugin! » – so even though you didn’t say it, that’s how it was taken.
I’d suggest doing was Pippin does for his plugins – he has a simple starter plugin he uses for all of his tutorials. Why not create a blank « Starter Plugin » download, with just the basics, so others can download and put their customizations in there instead? Reference it in each article you do and it takes out some of the confusion. Thanks.
Editorial Staff
We have been following Otto’s advice on site-specific plugin for quite some time. It is probably similar to what Pippin does. If you read this article, site-specific plugin is hyperlinked. It is in most other articles as well. That article shows users the importance of site-specific plugin and advise users to not put everything in functions.php file. At the bottom of that article, the sample « starter plugin » is there for anyone to start with.
codekipple
In fairness this tutorial helped me out. I wanted a simple solution for popular posts after trying some of the plugins and not being able to fully control the markup. This tutorial helped me quickly implement some popular posts functionality into my own plugin.
So i agree that using pre-built plugins is not a bad thing, but at times tutorials like this are useful to take control and build out a plugin that works the way you need it to instead of fighting against an already built plugin.
Pippin
As Zach said, please stop using « without a plugin ». Sure, it’s cool to see how to code this yourself but there is literally no difference between this code and the code in a plugin. You could place this code into a plugin and it would function identically to placing it in your theme.
Ruben
If you say there’s no difference, you have no idea what you’re talking about. Lets say your are working on a site and don’t have access to the plugins directory, making a solution that works « without using a plugin » would be a viable alternative.
As for the title, semantically the title should reflect the content of the post and could be « How to Display Popular Posts by Views in WordPress with or without a Plugin ».
However, taking SEO in to consideration, lets say he would like this post to reach a specific audience, for example, people who don’t want to or can’t use a plugin, the title would probably be best as is.
Gautam Doddamani
i am using genesis child theme..can u tell me which all functions and codes to use..i am sorry i am a noob to genesis…
Editorial Staff
For child theme users, the wp_head solution would work to track post views. Not sure what else you meant.
Administrateur
Gautam Doddamani
is it true? as artim told, does this code become unresponsive when we use a caching plugin?? for example i currently use W3 total cache and i want to use this method to build my custom popular post by views widget…i read this kind of post on wpsnipp.com and the users suggested it does not work when we enable caching plugins…reply soon…
Editorial Staff
Read the comment reply to Artem. You can use fragment caching to make it work just fine.