Un média associatif indépendant, sans budget pour un outil d’analytics avancé, s’appuyait sur les statistiques natives de son hébergeur, consultées manuellement une fois par semaine. Un article sur un sujet local devenu viral en dehors du site (partagé massivement sur les réseaux sociaux un dimanche) n’a été repéré par l’équipe que le mardi suivant, trop tard pour capitaliser dessus avec un article de suivi pendant que l’intérêt était encore fort.
La solution mise en place ne remplace pas un véritable outil d’analytics, mais couvre un besoin précis et immédiat : recevoir un email dès qu’un article dépasse un seuil de vues défini, sans attendre un rapport périodique.
Compter les vues avec une simple meta
Un compteur de vues maison, sans dépendance à un service externe, repose classiquement sur l’incrémentation d’une post meta à chaque affichage de l’article, déclenchée sur le template d’article isolé :
add_action( 'wp', function () {
if ( ! is_single() || is_admin() ) {
return;
}
$post_id = get_queried_object_id();
if ( ! $post_id ) {
return;
}
$vues = (int) get_post_meta( $post_id, '_nombre_vues', true );
update_post_meta( $post_id, '_nombre_vues', $vues + 1 );
media_verifier_seuils_notification( $post_id, $vues + 1 );
} );
Ce compteur simplifié compte chaque chargement de page, y compris les rechargements d’un même visiteur : c’est une limite connue de cette approche minimaliste, acceptable pour détecter une tendance forte, mais qui ne doit jamais être présentée comme une mesure d’audience précise et unique.
Vérifier les seuils sans envoyer plusieurs fois le même email

Le vrai piège de ce genre de notification : sans protection, chaque nouvelle vue au-delà du seuil redéclencherait un envoi, noyant l’équipe sous des dizaines d’emails identiques. La solution consiste à conserver, dans une meta séparée, la liste des seuils déjà notifiés pour cet article précis :
function media_verifier_seuils_notification( int $post_id, int $vues_actuelles ) {
$seuils = array( 500, 2000, 10000 );
$seuils_notifies = get_post_meta( $post_id, '_seuils_notifies', true );
$seuils_notifies = is_array( $seuils_notifies ) ? $seuils_notifies : array();
foreach ( $seuils as $seuil ) {
if ( $vues_actuelles >= $seuil && ! in_array( $seuil, $seuils_notifies, true ) ) {
media_envoyer_notification_seuil( $post_id, $seuil );
$seuils_notifies[] = $seuil;
}
}
update_post_meta( $post_id, '_seuils_notifies', $seuils_notifies );
}
function media_envoyer_notification_seuil( int $post_id, int $seuil ) {
$titre = get_the_title( $post_id );
$lien = get_permalink( $post_id );
wp_mail(
'redaction@media-associatif.example',
sprintf( 'L\'article « %s » dépasse %d vues', $titre, $seuil ),
sprintf(
"Cet article vient de dépasser %d vues cumulées.\n\nLien : %s\n\nUn article de suivi pourrait capitaliser sur cet intérêt pendant qu'il est encore élevé.",
$seuil,
$lien
)
);
}
Trois seuils progressifs (500, 2 000, 10 000) permettent de suivre la montée en puissance d’un article plutôt qu’un unique signal ponctuel : la deuxième notification confirme que le premier pic n’était pas un simple sursaut isolé.
Éviter de compter les robots d’indexation
Sans filtrage, les robots des moteurs de recherche et les outils de prévisualisation de liens (Facebook, Twitter/X) gonflent artificiellement ce compteur simplifié. Un filtre basique sur l’en-tête User-Agent, en complément du test is_single(), réduit ce bruit sans nécessiter une bibliothèque de détection complète :
function media_est_probablement_un_robot() {
$agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
return (bool) preg_match( '/bot|crawl|spider|facebookexternalhit|preview/i', $agent );
}
Limiter la fréquence d’écriture en base
Sur un article qui reçoit un afflux massif de trafic en quelques minutes, incrémenter une meta à chaque requête peut créer une contention sur la table wp_postmeta. Pour un site à fort trafic, une file d’attente en cache objet (via wp_cache_incr() si un cache persistant comme Redis est configuré), synchronisée périodiquement vers la meta réelle par une tâche planifiée, absorbe bien mieux les pics que des écritures directes et répétées en base à chaque vue.
Ce que ce mécanisme ne remplace pas
Ce compteur maison reste un signal d’alerte simple, pas un outil de mesure d’audience fiable au sens strict : il ne distingue pas les visiteurs uniques des rechargements, ne segmente pas par source de trafic, et ne mesure pas le temps de lecture réel. Pour un site qui a besoin de ces métriques plus fines, un outil d’analytics dédié reste indispensable ; ce mécanisme comble seulement l’attente entre deux rapports périodiques.
- Adaptez les seuils à l’audience réelle de votre site : les valeurs ci-dessus conviennent à un site de taille modeste, pas à un média à fort trafic.
- Vérifiez que l’adresse email de notification correspond bien à une boîte activement surveillée, pas une adresse générique jamais consultée.
- Prévoyez un moyen de réinitialiser les seuils notifiés pour un article, utile après un test ou une correction de données.
Une notification qui arrive trop tard ne sert à rien : sur les sites d’actualité, je privilégie toujours un mécanisme simple et immédiat, quitte à accepter une mesure moins précise, plutôt qu’un système sophistiqué qui ne remonte l’information qu’après le pic d’intérêt.
Ce qui compte vraiment
Ce mécanisme de notification par seuil, entièrement basé sur des fonctions natives (post meta, wp_mail()), permet à une petite équipe éditoriale de réagir à un article qui décolle sans attendre un rapport hebdomadaire. Ce n’est pas un substitut à un véritable outil d’analytics, mais un complément réactif qui comble une attente réelle entre deux consultations manuelles des statistiques.