Vous cherchez un moyen de suivre les vues d'articles sans plugin en utilisant les métadonnées d'article ? Bien qu'il existe probablement un plugin pour cela, nous avons créé un extrait de code rapide que vous pouvez utiliser pour suivre les vues d'articles sans plugin en utilisant les métadonnées d'article dans WordPress.
Instructions :
Ajoutez ce code au fichier functions.php de votre thème ou dans un plugin spécifique au 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);
Ajoutez éventuellement ce code à une colonne dans l'administration WordPress qui affiche les vues d'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 d'articles. Placez simplement ce code ci-dessous dans le fichier single.php à l'intérieur de la boucle WordPress.
<?php
setPostViews(get_the_ID());
?>
Remarque sur la mise en cache par 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 par fragments. Au lieu de ce qui précède, utilisez ce qui suit pour que setPostViews() s'exécute correctement et suive toutes vos vues d'articles, même lorsque la mise en cache est activée.
<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->
Le code ci-dessous est facultatif. 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());
?>
Remarque : Si c'est la première fois que vous ajoutez des extraits de code dans WordPress, veuillez consulter notre guide sur comment 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 de témoignages WordPress et comment configurer le suivi des auteurs dans WordPress avec Google Analytics.
Oops désolé, veuillez ignorer mon commentaire précédent. J'ai réalisé que j'appelais la fonction setPostViews plusieurs fois. C'est ma faute….
Après avoir corrigé cela, je ne vois le nombre de vues augmenter que de +2 chaque fois que je rafraîchis l'article de blog unique.
Quelqu'un a-t-il une solution pour cela ? Je n'imagine pas que ce sera un gros problème étant donné que la plupart des utilisateurs ne rafraîchiront pas réellement la page, bien que ce serait bien d'avoir un nombre de comptage réel à afficher…
Merci pour le code 🙂
Comment créer un nombre de vues aléatoire entre (600,900)
Aidez-moi s'il vous plaît..
comment puis-je arrêter l'augmentation automatique du compteur lors du rechargement de la page ?
Salut, vraiment de super conseils. Merci de les partager avec nous. J'utilise un plugin et Google Analytics pour suivre mes vues de page.
Salut,
Je veux afficher le compteur dans la classe meta, mon code meta est :
comment imprimer le compteur entre les meta comme auteur, date, catégories ?
Salut,
Connaissez-vous le nom de champ PHP/wp standard pour les vues de publication ? Je veux juste afficher cela, simplement.
Merci.
Risk Manager
j'essaie mais ça ne marche pas pour moi.
Si j'ai seulement besoin de 5, devrais-je changer ?
Où apparaîtront les vues de publication ?
Dans l'emplacement où vous placez le code dans votre modèle de l'étape 2.
echo getPostViews(get_the_ID());vous pouvez placer cela dans du HTML et le styliser si vous le souhaitez. Mais les données sont enregistrées dans les métadonnées de la publication, vous devriez pouvoir le voir lorsque vous modifiez une publication dans la section des champs personnalisés.w3t cache rend le cache de fragments disponible uniquement dans la version pro $$$
Bon après-midi,
Le snippet fonctionne très bien, mais j'ai besoin de réinitialiser la valeur.
Quelqu'un pourrait m'aider, s'il vous plaît.
J'essaie ceci mais ça ne marche pas – UPDATE wp_postmeta SET meta_value = ‘0’ WHERE wp_postmeta.meta_key =’post_views_count’
Merci
vous pouvez réinitialiser en allant dans la base de données de votre site web, cherchez postmeta, cliquez dessus et recherchez post_view_count et supprimez-les tous
Désolé mais je ne trouve pas ce champ dans ma base de données, veuillez expliquer comment réinitialiser les compteurs à 0. Merci
Les métadonnées de publication se trouvent sous la table wp_postmeta. Si aucune des lignes dans la colonne meta_key n'a post_views_count comme valeur, alors il est possible que le compte n'ait pas encore été enregistré dans la base de données.
Salut tout le monde, Si quelqu'un cherche à compter les visites par adresse IP, pour ne compter qu'une seule visite par visiteur, c'est le bon code pour le faire, j'espère qu'il fonctionne bien pour vous, voici mes modifications sur la fonction “setPostViews” :
function setPostViews($postID) { session_start(); $count_key = ‘post_views_count’; $count = get_post_meta($postID, $count_key, true); if($count==”){ // Si le compteur n'existe pas $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, ‘0’); // Initialise le compteur à 0 }else{ // Si le compteur existe if(!isset($_SESSION[‘post_views_count-‘. $postID])){ // Si la vue n'a pas encore été comptée pour cet article dans cette session $_SESSION[‘post_views_count-‘. $postID]=”si”; // Marque la vue comme comptée pour cet article dans cette session $count++; // Incrémente le compteur update_post_meta($postID, $count_key, $count); // Met à jour le compteur dans la base de données } } }
Remplacez simplement cette fonction par l'ancienne fonction et le tour est joué !!
ne fonctionne pas
Merci beaucoup. Le code fonctionne pour moi :)
Salut Je l'utilise et c'est génial Mais je rencontre un problème ennuyeux Il compte deux fois dans le type de publication personnalisé.
Je ne sais pas quoi faire pour le réparer, une aide ?
Avez-vous placé la fonction setPostViews() dans le modèle single.php ou un autre modèle ?
J'ai exactement le même problème ! Oui, je l'ai placé uniquement dans le fichier single.php... j'utilise ce plugin icm wp car manager... Il compte aussi par 2 4 6 à chaque visite.
C'est un extrait utile. Merci de partager !
Modifiqué la función y le agregué para que comprobace si había una sesión activa de la visita del póst y pues.. aca está;
function wpb_set_post_views($postID) { session_start(); $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{ if(!isset($_SESSION['post_views_count-' . $postID])){ $_SESSION['post_views_count-' . $postID]='si'; $count++; update_post_meta($postID, $count_key, $count); } } }
et à quoi ça servirait ? quelque chose en particulier ?
J'ai un double comptage pour chaque vue. Quand le post est vu, il ajoute deux vues au lieu d'une.
J'ai le même problème. Quelqu'un a une idée de ce qui cause le problème ?
dans quel fichier de modèle mettez-vous la fonction setPostViews() ?
single.php J'ai essayé de placer setPostViews() à l'intérieur et à l'extérieur de la boucle, mais je n'ai pas pu résoudre le problème.
J'ai aussi le même problème…
Cela fonctionne en appelant la fonction de définition des vues qui ajoute des métadonnées au post, donc à moins qu'elle ne soit appelée deux fois, vous n'obtiendriez qu'une seule vue. Je vérifierais votre thème pour m'assurer que rien comme des boucles multiples ou autre chose n'est impliqué. Cependant, à moins que je ne voie le single.php de votre thème, je ne pourrais pas être sûr du problème exact.
J'ai le même problème aussi. dans le single.php, que ce soit à l'intérieur ou à l'extérieur de la boucle, il compte 2 à chaque fois que je rafraîchis la page…
C'est aussi mon thème personnel…
J'ai remarqué cependant que j'ai créé un modèle de post personnalisé, je le garde en dehors de la boucle juste en dessous de la balise body, et il ne compte qu'une seule fois lorsque je rafraîchis la page…
J'ai aussi essayé de le mettre dans l'en-tête du header.php et il ne compte qu'une seule fois là aussi…. la seule fois où cela ne fonctionne pas correctement, c'est lorsque je regarde la page domain.com/blog et que je la rafraîchis à partir de là, le premier post dans le flux du blog compte une fois.
oh bien, je peux vivre avec ça… merci encore pour le code…
Vous voudrez peut-être vérifier si setPostViews(); est appelé deux fois, par exemple si le thème appelle le code du modèle deux fois.
Je n'arrive pas à faire fonctionner cela avec W3 Total Cache. Y a-t-il un moyen de le faire fonctionner avec ou est-ce absolument impossible ?
D'autres personnes ont-elles des problèmes pour faire fonctionner le compteur ? J'utilise WordPress 4.2 et j'ai W3 Total Cache installé. Le compte reste à 0 quoi qu'il arrive (utilisateur connecté, utilisateur déconnecté, actualisation de la page, cache vidé).
Je cherche seulement à faire fonctionner le compte via le backend. Toutes les idées seraient grandement appréciées.
moi aussi !
Avez-vous résolu ce problème ?. Je pense que je peux vous aider.
fantastique, comment faire pour qu'il ne compte que les vues de messages d'aujourd'hui
merci
Fonctionne très bien dans single.php, mais qu'en est-il dans category.php. Si vous actualisez la page, tous les articles ajoutent une vue, il devrait récupérer le nombre réel de vues des articles.
Avez-vous trouvé une solution ? J'utilise WP 5.2.2 et j'obtiens un compte de +2 à l'actualisation... Sinon, cela semble fonctionner....
fonctionne très bien, exactement ce que je voulais. merci de partager mon frère.
Salut !
Tout d'abord, merci pour ce script, il a été très utile.
J'ai une question, j'ai cet extrait dans un thème personnalisé que je développe afin de redessiner/recoder mon portfolio et j'ai constaté que dans les articles personnalisés, le compteur est affiché, mais lorsque je suis dans wp-admin, il n'affiche pas le nombre de visites que j'ai comme il le fait dans les articles réguliers.
Avez-vous une idée de comment résoudre ce problème ?
Merci.
Bien !! Merci pour le script !! Très bien !!
cela ne compte que mes vues comment puis-je faire en sorte qu'il compte les vues de tout le monde
En regardant le code dans l'article, il devrait certainement suivre les vues de chaque visiteur.
Soit vous n'avez absolument aucun visiteur (cela semble peu probable), soit vous avez placé l'appel de la fonction setPostViews() à l'intérieur d'un bloc conditionnel qui ne se déclenche que si l'utilisateur est connecté ou est un administrateur de la page.
Merci pour le script. Y a-t-il un moyen d'afficher, par exemple, les 5 articles les plus consultés ?
Enfin quelque chose de simple et ça fonctionne très bien, merci