Sélectionner une page

Comment générer un sitemap XML sur WordPress sans plugin ?

30 Juin 2026

Dessins d'ordinateurs et d'objets high-tech

Comprendre le sitemap xml wordpress et ses limites

Depuis WordPress 5.5, un sitemap XML natif est disponible par défaut à l’adresse /wp-sitemap.xml. Il répertorie les contenus indexables du site (articles, pages, catégories, étiquettes, auteurs), organisés par types de contenus. Sur un site classique, l’URL ressemble à https://votresite.fr/wp-sitemap.xml et liste plusieurs fichiers enfants, formant un sitemap index1. L’avantage est double : pas de plugin à installer, et une structure conforme aux standards reconnus par les moteurs. Toutefois, les besoins avancés exigent souvent quelques ajustements (exclure un type de contenu, ajouter des URL statiques, affiner la fréquence de mise à jour). La bonne nouvelle : tout se fait avec quelques filtres dans le fichier de thème functions.php, sans grever les performances et en restant compatible avec les thèmes en blocs comme avec les installations multisites.

Côté compatibilité, les thèmes blocs n’influencent pas le sitemap : la fonctionnalité relève du cœur de WordPress, indépendante du système de templates. En multisite, chaque site dispose de son propre sitemap (ex. https://reseau.com/site-a/wp-sitemap.xml). Il n’existe pas d’index global réseau par défaut ; si vous en voulez un, vous devrez le fabriquer via code séparé et l’exposer depuis le site principal.

Avant toute personnalisation, validez deux points simples : l’URL /wp-sitemap.xml doit renvoyer un code HTTP 200 et contenir les liens attendus, et votre serveur ne doit pas bloquer l’accès aux fichiers XML. C’est la base pour une prise en compte fiable par les moteurs.

Astuce terrain : quand un sitemap « semble vide », vérifiez d’abord que les contenus sont publics, publiés, et non exclus via noindex ou visibilité restreinte. Ne codez rien tant que les fondamentaux ne sont pas en ordre.

Activer l’indexation Google dans WordPress et préparer le site

Le sitemap n’a d’intérêt que si vos pages sont indexables. Dans Réglages > Lecture, désactivez l’option « Demander aux moteurs de recherche de ne pas indexer ce site ». Sur un environnement de préproduction, laissez-la cochée, puis décochez-la au moment de la mise en ligne. Cette bascule influe sur la génération de directives et peut affecter la découverte de vos URL.

Vérifiez ensuite que aucun en-tête HTTP ni balise meta robots indésirable ne bloque l’indexation. Si vous utilisez des modèles personnalisés ou un thème enfant, auditez vos templates pour éviter des « noindex » accidentels sur des taxonomies ou des archives d’auteurs que vous souhaitez publier. Contrôlez aussi le fichier robots.txt virtuel de WordPress en visitant https://votresite.fr/robots.txt et assurez-vous qu’aucune règle « Disallow » trop large ne bloque des répertoires utiles. Tenez compte des spécificités de chaque user-agent2 si vous ciblez différents crawlers.

Pour les installations multisites, ajustez ces réglages site par site. Un sous-site en chantier peut rester non indexable tandis que d’autres restent ouverts. Documentez vos choix d’indexation pour éviter les régressions lors des mises à jour de thème ou des changements d’URL.

Ajouter du code dans functions.php pour personnaliser le sitemap

Vous pouvez forcer l’activation du sitemap natif, même si un composant tente de le désactiver, en ajoutant dans functions.php : add_filter(‘wp_sitemaps_enabled’,’__return_true’);

Pour exclure un type de contenu (ex. pièces jointes bruyantes), ajoutez : add_filter(‘wp_sitemaps_post_types’, function($types){unset($types[‘attachment’]);return $types;});

Pour retirer une taxonomie peu pertinente (ex. post_format), utilisez : add_filter(‘wp_sitemaps_taxonomies’, function($tax){unset($tax[‘post_format’]);return $tax;});

Pour ajouter des URL statiques (mentions légales, pages hors CMS, landing externe répliquée), deux voies existent. La robuste consiste à enregistrer un provider dédié. Exemple de principe, à condenser dans functions.php : créer une classe étendant WP_Sitemaps_Provider qui renvoie une liste d’entrées avec ‘loc’ et ‘lastmod’, puis l’injecter via le filtre ‘wp_sitemaps_add_provider’. C’est la méthode la plus propre pour maîtriser vos URL et la pagination.

Si vous préférez rester simple, vous pouvez ajouter un hook au moment où WordPress assemble les entrées d’un type de contenu et y greffer des pages canoniques externes ou internes. Cherchez les filtres « wp_sitemaps_*_entry » disponibles selon vos types (posts, taxonomies, users) et appliquez une logique conditionnelle pour n’ajouter que ce qui est pertinent.

Enfin, pour annoncer le sitemap dans le fichier robots.txt, ajoutez : add_filter(‘robots_txt’, function($o,$p){return $o. »Sitemap: « .home_url(‘/wp-sitemap.xml’). »\n »;},10,2); Cela facilite la découverte par des crawlers tiers et par des outils d’audit, sans modifier de fichier système. Cette approche fonctionne avec les thèmes blocs, les thèmes classiques et dans un contexte multisite, où chaque site renverra son propre chemin.

Gardez le code concis, versionnez vos ajouts et testez après chaque changement. Un functions.php mal formé peut provoquer une erreur fatale côté front comme côté admin.

Vérifier le sitemap dans Search Console et résoudre les blocages

Après mise en place, vérifiez votre sitemap dans Search Console. Connectez-vous à Search Console, sélectionnez la propriété correspondant au domaine canonique, ouvrez « Sitemaps » et soumettez l’URL complète, par exemple https://votresite.fr/wp-sitemap.xml. Le statut doit passer à « Récupération réussie ». Si vous utilisez des sous-domaines ou des répertoires en multisite, soumettez un sitemap par site.

En cas d’échec, procédez méthodiquement. Confirmez que l’URL renvoie HTTP 200, sans redirection en boucle ni 403. Vérifiez que l’XML respecte la taille et le nombre d’URLs par fichier (WordPress segmente automatiquement, mais un conflit de plugin pourrait casser la pagination). Assurez-vous que robots.txt n’interdit pas l’accès au chemin des sitemaps ou à des répertoires critiques (wp-includes n’a pas besoin d’être accessible, mais vos permaliens publiés, si). Contrôlez aussi que les URL du sitemap pointent vers des pages actives et non des ébauches ou des contenus privés.

Sur l’onglet « Couverture » de Search Console, traitez les erreurs récurrentes : « Exclue par la balise noindex », « Bloquée par robots.txt », « Redirection » ou « Soft 404 ». Corrigez côté contenu ou gabarit, puis demandez une validation depuis l’interface. Pour un blog débutant, concentrez-vous sur la cohérence des canonicals, la clarté des permaliens et l’absence de contenus dupliqués.

Notez enfin que soumettre le sitemap ne force pas l’indexation. Il améliore la découverte des URL, mais la décision d’indexer dépend de la qualité, de la pertinence et de la capacité d’exploration du site par Google.

Automatiser les mises à jour et signaler dans le fichier robots.txt

Le sitemap natif se met à jour lorsque vous publiez, mettez à jour ou supprimez des contenus. Pour les cas particuliers (contenus générés hors WordPress, pages miroir, flux externes), vous pouvez planifier une tâche pour rafraîchir des métadonnées ou notifier certains moteurs. Utilisez l’ordonnanceur interne de WordPress, basé sur cron4, en programmant un événement récurrent qui met à jour les dates ‘lastmod’ que vous exposez via votre provider personnalisé. Exemple de logique : à chaque exécution, vérifier les ressources externes, puis enregistrer un timestamp en option ou méta, lu par le provider.

Concernant la notification des moteurs, l’ancienne pratique de « ping »3 vers Google n’est plus nécessaire. Google ignore désormais ce point d’entrée et découvre les sitemaps via vos liens et votre robots.txt. Vous pouvez en revanche encore notifier Bing si vous le jugez utile, en appelant périodiquement son endpoint public avec l’URL de votre sitemap. Implémentez l’appel via wp_remote_get dans un hook déclenché après vos mises à jour massives, en gardant un contrôle de taux pour éviter les abus.

Pour sécuriser ces automatisations sur un hébergement mutualisé, préférez des tâches peu coûteuses, logguez les erreurs côté serveur et surveillez la taille de vos sitemaps. En multisite, évitez les boucles réseau complètes à haute fréquence ; ciblez plutôt les sites ayant une activité. Enfin, conservez l’annonce « Sitemap: » dans le fichier robots.txt de chaque site, c’est un signal stable pour tous les crawlers.

Avant déploiement, effectuez un contrôle final : lecture de /wp-sitemap.xml et de ses dérivés, statut HTTP propre, absence de blocage robots, soumission unique dans Search Console, et documentation de vos filtres functions.php pour faciliter la maintenance future. Un sitemap simple, propre et vérifiable vaut mieux qu’une sur-optimisation fragile.

  1. Sitemap index : fichier maître listant plusieurs sitemaps, utilisé pour segmenter par type et par volume.
  2. User-agent : identifiant du robot dans robots.txt, permettant d’appliquer des règles spécifiques selon le crawler.
  3. Ping : appel HTTP notifiant un moteur de la présence ou mise à jour d’un sitemap ; obsolète pour Google, encore accepté par certains moteurs.
  4. Cron : planificateur d’exécutions récurrentes ; dans WordPress, wp-cron s’exécute à la visite, ou via une vraie tâche CRON serveur si configurée.

Plus d’articles

Que faire quand le stockage smartphone se remplit après l’été ?

Que faire quand le stockage smartphone se remplit après l’été ?

14 juillet 2026 | Smartphone
Un purificateur d’air est-il utile quand on ferme les fenêtres à l’automne ?

Un purificateur d’air est-il utile quand on ferme les fenêtres à l’automne ?

12 juillet 2026 | High-tech
Comment préparer une landing Black Friday dès septembre ?

Comment préparer une landing Black Friday dès septembre ?

9 juillet 2026 | Web