# Des sitemaps segmentés pour un catalogue WordPress de plus de 200 000 produits

> Un sitemap unique de 200 000 URL n'est pas seulement lourd à générer : il est aussi illisible pour les moteurs. Voici comment le découper par catégorie sans perdre en fraîcheur.

- Auteur : Clément Hadrot
- Publié le : 2024-11-17
- Mis à jour le : 2024-11-17
- Catégorie : SEO &amp; GEO
- URL : https://wpmoderne.dev.wordpress-developpement.fr/seo/sitemaps-segmentes-catalogue-200000-produits/

## L’essentiel

- Un sitemap segmenté par catégorie facilite le diagnostic de couverture
- La fréquence de régénération doit suivre le rythme réel des stocks
- Un index de sitemaps distinct évite de dépasser la limite de 50 000 URL

200 000 fiches produit, une seule limite technique incontournable : 50 000 URL par fichier sitemap, imposée par la spécification du protocole sitemaps.org. Sur ce site e-commerce WordPress bâti autour de WooCommerce, le sitemap natif généré automatiquement dépassait largement ce plafond dès la première version du catalogue, ce qui obligeait à une segmentation réfléchie plutôt qu'à une simple pagination technique.

Ce cas illustre une architecture mise en place pour un site de pièces détachées automobiles, dont le catalogue évolue en permanence : nouvelles références ajoutées quotidiennement, ruptures de stock fréquentes, et une exigence forte de fraîcheur du sitemap pour ne pas gaspiller le budget de crawl sur des pages obsolètes.

## Pourquoi le découpage natif de WordPress ne suffit pas ici

Le sitemap natif de WordPress, disponible depuis la version 5.5 via la classe `WP_Sitemaps_Posts`, découpe automatiquement les contenus en pages de 2 000 URL par défaut (valeur ajustable via `wp_sitemaps_max_urls`), regroupées sous un même provider par type de contenu. Ce découpage technique fonctionne, mais il ignore complètement la structure logique du catalogue : une page de sitemap peut ainsi mélanger des produits de catégories totalement différentes, rendant impossible un diagnostic de couverture par famille de produits dans Search Console.

Or, pour ce site, la question métier centrale n'était pas « le sitemap est-il valide ? » mais « quelles catégories de produits sont mal indexées ? ». Un découpage par catégorie a donc été privilégié, au prix d'un développement sur mesure remplaçant partiellement le comportement natif.

## Architecture retenue : un index par catégorie plutôt qu'un découpage arithmétique

La structure finale s'organise ainsi :

```
/wp-sitemap.xml                     (index principal)
├── /wp-sitemap-categorie-freins.xml
├── /wp-sitemap-categorie-freins-2.xml
├── /wp-sitemap-categorie-moteur.xml
├── /wp-sitemap-categorie-carrosserie.xml
├── ...
└── /wp-sitemap-categorie-electricite-4.xml
```

Chaque sitemap de catégorie reste sous la limite de 50 000 URL ; lorsqu'une catégorie dépasse ce seuil, elle est elle-même scindée en plusieurs fichiers numérotés, à la manière du comportement natif mais appliqué à l'intérieur d'un même périmètre métier. Cette granularité a permis, dès la première semaine de suivi dans Search Console, d'identifier que la catégorie « carrosserie » présentait un taux de couverture nettement inférieur aux autres, révélant un problème de canonicalisation propre à ce gabarit de page.

> L'essentiel à retenir : Un sitemap segmenté par catégorie facilite le diagnostic de couverture ; La fréquence de régénération doit suivre le rythme réel des stocks ; Un index de sitemaps distinct évite de dépasser la limite de 50 000 URL

## Implémentation : un provider de sitemap personnalisé

Techniquement, cette segmentation s'appuie sur l'enregistrement d'un provider personnalisé via le filtre `wp_sitemaps_add_provider`, en désactivant au préalable le provider natif pour le type de contenu produit :

```
add_filter( 'wp_sitemaps_add_provider', function( $provider, $name ) {
    if ( 'posts' === $name ) {
        return false;
    }
    return $provider;
}, 10, 2 );

add_action( 'init', function() {
    wp_register_sitemap_provider(
        'categorie_produit',
        new Sitemap_Provider_Categorie()
    );
} );
```

La classe `Sitemap_Provider_Categorie` hérite de `WP_Sitemaps_Provider` et surcharge les méthodes `get_url_list()` et `get_max_num_pages()` pour interroger les produits catégorie par catégorie plutôt que globalement. Cette approche demande davantage de code que la simple configuration d'une extension, mais offre un contrôle total sur la logique de segmentation.

## Fréquence de régénération : suivre le rythme du stock, pas un cron arbitraire

Un piège classique consiste à régénérer le sitemap une fois par jour via une tâche cron fixe, sans lien avec le rythme réel des mises à jour du catalogue. Sur ce site, les ruptures de stock et arrivages sont quotidiens mais concentrés sur certaines catégories seulement (freins et électricité, en lien avec la saisonnalité). La régénération a donc été déclenchée par événement plutôt que par horloge :

- Invalidation du cache du sitemap de la catégorie concernée à chaque changement de statut de stock via le hook `woocommerce_product_set_stock_status` ;
- Régénération asynchrone via `wp_schedule_single_event`, pour éviter de ralentir la sauvegarde du produit côté back-office ;
- Purge complète hebdomadaire programmée, en filet de sécurité, pour rattraper d'éventuels événements manqués.

## Résultat mesuré après trois mois

Trois mois après la mise en place de cette architecture, le taux de pages exclues de l'index dans le rapport de couverture de Search Console est passé de 34 % à 11 %, principalement grâce à l'identification rapide des catégories problématiques rendue possible par la segmentation. Le temps de génération complet du sitemap, lui, est resté stable autour de quatre minutes, réparti sur l'ensemble des tâches asynchrones plutôt que concentré sur une seule requête bloquante.

## En résumé

Découper un sitemap volumineux par simple pagination technique règle le problème de la limite des 50 000 URL, mais passe à côté d'un bénéfice bien plus précieux : la capacité à diagnostiquer, catégorie par catégorie, où se situent les problèmes d'indexation. Sur un catalogue de cette taille, l'investissement dans un provider de sitemap personnalisé se justifie largement, à condition de coupler cette segmentation à une régénération pilotée par les événements métier plutôt que par une simple tâche planifiée.
