Le WordPress d'aujourd'hui, décodé pour les développeurs

Tips

Un filtre « jamais consulté depuis un an » sur un site à cent mille articles

Repérer rapidement les contenus candidats à un archivage ou une suppression sur un très gros volume éditorial.

Par Clément Hadrot • 31 mars 2026 • 4 min de lecture • Aucun commentaire
Un filtre « jamais consulté depuis un an » sur un site à cent mille articles

« Il faut faire le ménage dans le site, mais personne ne sait par où commencer. » Cette phrase, entendue lors d’un audit éditorial sur un site cumulant cent mille articles publiés depuis plus de dix ans, résume bien le problème : sans indicateur de consultation par contenu, impossible de distinguer un article dormant mais toujours pertinent d’un article réellement obsolète que plus personne ne lit depuis longtemps.

La solution technique demande de croiser deux sources de données rarement connectées entre elles : la table des articles WordPress et les données de consultation issues d’un outil d’analytics, qu’il s’agisse d’une solution auto-hébergée ou d’une API externe.

Stocker la date de dernière consultation en métadonnée

Plutôt que d’interroger l’outil d’analytics à chaque affichage de l’écran d’administration, ce qui serait beaucoup trop lent sur cent mille articles, on synchronise une fois par nuit la date de dernière consultation dans une métadonnée native, via une tâche planifiée qui traite les articles par lots :

add_action( 'synchro_stats_consultation', 'synchroniser_lot_articles' );
function synchroniser_lot_articles() {
    $lot = get_posts( array(
        'post_type'      => 'post',
        'posts_per_page' => 500,
        'meta_query'     => array( array(
            'key'     => '_derniere_consultation_sync',
            'compare' => 'NOT EXISTS',
        ) ),
        'fields' => 'ids',
    ) );

    foreach ( $lot as $post_id ) {
        $derniere_vue = recuperer_derniere_vue_analytics( $post_id );
        update_post_meta( $post_id, '_derniere_consultation', $derniere_vue );
        update_post_meta( $post_id, '_derniere_consultation_sync', current_time( 'mysql' ) );
    }
}

Construire le filtre dans l’administration

L'essentiel à retenir : Croiser la table des articles avec les données de consultation ; Un traitement par lots pour éviter le timeout ; Un statut « à archiver » avant suppression définitive

Une fois la métadonnée disponible, un filtre personnalisé sur l’écran edit.php permet de restreindre la liste des articles à ceux dont la dernière consultation dépasse un an :

add_action( 'pre_get_posts', 'appliquer_filtre_jamais_consulte' );
function appliquer_filtre_jamais_consulte( $query ) {
    if ( ! is_admin() || empty( $_GET['filtre_inactivite'] ) ) {
        return;
    }

    $query->set( 'meta_query', array( array(
        'key'     => '_derniere_consultation',
        'value'   => strtotime( '-1 year' ),
        'compare' => '<',
        'type'    => 'NUMERIC',
    ) ) );
}

Éviter le timeout sur une requête trop large

Sur cent mille lignes, une meta_query sans index approprié sur la clé _derniere_consultation peut ralentir considérablement l’affichage. Un index composite sur la table wp_postmeta, ciblant spécifiquement cette clé de métadonnée, réduit le temps de réponse de façon très significative par rapport à un balayage complet de la table.

Un statut intermédiaire avant suppression définitive

Identifier les articles candidats ne signifie pas les supprimer immédiatement. Un statut personnalisé a_archiver, appliqué en masse depuis la liste filtrée, retire les articles du sitemap et de la recherche interne sans effacer leur contenu, le temps qu’une revue éditoriale confirme définitivement leur archivage ou leur suppression :

  • Articles jamais consultés depuis un an : passage automatique au statut « à archiver »
  • Revue éditoriale : validation manuelle par lot de cent articles
  • Suppression définitive : uniquement après confirmation explicite, jamais en un seul clic global

Attention aux faux positifs

Un article saisonnier (guide fiscal, calendrier d’événement annuel) peut afficher zéro consultation pendant onze mois puis un pic soudain au moment opportun. Croiser la donnée de consultation avec la fréquence historique de pics permet d’exclure ces cas particuliers du filtre d’archivage automatique, pour ne pas supprimer un contenu qui reprend vie chaque année à date fixe.

Un site qui grossit sans jamais rien archiver finit par noyer ses meilleurs contenus sous une masse de pages mortes que même les moteurs de recherche cessent d’explorer sérieusement.

En résumé

Synchroniser une métadonnée de dernière consultation par lots nocturnes, puis filtrer l’administration sur cette base, rend gérable un chantier d’archivage qui semblait insurmontable sur cent mille articles. La prudence reste de mise sur les contenus saisonniers, seul vrai piège de cette approche par ailleurs assez simple à mettre en œuvre.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi