WordPress 5.5 peut générer des sitemaps XML nativement

Mathieu Chartier Développement 0 commentaire

WordPress inclut les Sitemaps XML générés

WordPress 5.5 va être déployé en août 2020 et va accueillir une fonctionnalité qui devrait ravir les SEO et webmasters. Après tant d'années, les équipes de WordPress ont décidé d'inclure la génération de fichiers sitemaps XML directement dans le coeur (core) de WordPress. Ainsi, tout le monde pourra bénéficier de fichiers générés pour lister les articles, pages, produits, et toutes autres entités utiles à indexer dans les moteurs de recherche.

Jusqu'à présent, il fallait passer par des extensions dédiées de SEO comme SEOpress, Yoast SEO, All-in-One SEO, Google Sitemaps (et tant d'autres...) pour réaliser ces fichiers. Certes, on peut se dire que la fonctionnalité native arrive un peu tard car pléthores de webmasters possèdent désormais ces extensions justement. Cependant, les usagers d'extensions comme Google Sitemaps, uniquement dédiées à la création de Sitemaps, pourront de fait se passer des plugins, en profitant des fichiers créés par le coeur de WordPress (la fonctionnalité est déjà accessible avec le plugin Core Sitemaps qui précède son intégration officielle dans WordPress)...

WordPress va donc créer un fichier wp-sitemap.xml à la racine, en général sous la forme d'un Sitemap Index, c'est-à-dire une liste d'autres fichiers Sitemaps de plus petites tailles. À ce sujet, un Sitemap Index pourra accueillir 50000 entrées (maximum dans un sitemap XML) et chaque Sitemap indépendant 2000 entrées maximum (habituellement, c'est encore 50000, mais ce choix a certainement une bonne raison d'avoir été pris... ^^).

La bonne nouvelle est que le fichier robots.txt créé par WordPress va ajouter une directive pour donner accès à ce fichier Sitemap XML (directive "sitemap: URL_SITEMAP"). Ainsi, les non connaisseurs ne seront pas obligés de créer des comptes Google Search Console ou Bing Webmaster Tools (même si c'est recommandé) pour indiquer le chemin de leur fichier de listing. L'autre avantage est que l'ensemble des moteurs de recherche compatibles avec le protocole pourront crawler les plans de site XML. De fait, tout est fait pour que l'utilisateur laisse WordPress gérer les Sitemaps XML comme un grand. ;-)

Modifier la génération des Sitemaps XML dans WordPress

Côté développement, WordPress a prévu plusieurs fonctionnalités. Par exemple, si vous êtes concepteur d'un plugin qui ajoute des pages dans WordPress, et qu'il vous semble nécessaire de les ajouter aux Sitemaps XML à générer, alors la classe WP_Sitemaps_Provider et les méthodes qui en découlent permettront de gérer cet aspect. À l'inverse, vous pouvez également utiliser un "provider" (fournisseur) pour supprimer des Sitemaps XML qui ne vous sembleraient pas opportuns. La fonctionnalité la plus simple reste l'usage d'un filtre pour retirer des Sitemaps XML de taxonomies, comme "page" ou "post".

add_filter(
    'wp_sitemaps_post_types',
    function( $post_types ) {
        unset( $post_types['page'] );
        return $post_types;
    }
);

Sachez que par défaut, WordPress ne génère que les balises <loc> dans les blocs <urlset> des fichiers Sitemaps. Sous entendu, WordPress ne fait que lister les URL intéressantes pour chaque entrée dans le CMS. Si vous souhaitez ajouter d'autres informations optionnelles, à savoir la date de dernière modification (<lastmod>), la fréquence de modification (<changefreq>) ou encore la priorité d'indexation (<priority>), c'est possible. Toutefois, ces 3 champs n'ont que peu d'impact pour les moteurs de recherche (et c'est déjà sympa de dire qu'ils jouent un mini rôle... ^^), donc ça limite l'intérêt de modifier ce type d'informations.

Il est bien entendu possible de discriminer l'ajout d'articles ou de pages dans les fichiers Sitemaps XML automatiquement générés par WordPress. Il convient de filtrer les résultats en amont de la génération afin que ces documents soient exclus, comme ceci :

add_filter('wp_sitemaps_posts_query_args', function($args, $post_type) {
        if('post' !== $post_type || 'page' !== $post_type) {
            return $args;
        }
 
        $args['post__not_in'] = isset($args['post__not_in']) ? $args['post__not_in'] : array();
        $args['post__not_in'][] = 123; // "123" est l'ID de l'article ou de la page à exclure
        return $args;
}, 10, 2);
SimpleXML pour la génération des Sitemaps XML

Techniquement, il faut que le serveur web utilise l'extension PHP simpleXML (comme cela, toutes les fonctions du modules sont applicables). Rassurez-vous, c'est en général le cas, donc il ne devrait pas y avoir de problèmes particuliers. Si jusqu'à présent vous passiez par des plugins pour générer vos Sitemaps XML, dites-vous qu'il y a 90% de chances qu'eux aussi utilisent simpleXML (sinon ce serait sûrement XML Reader).

Désactiver la génération de Sitemaps XML dans WordPress 5.5 (et plus)

Il est possible de désactiver totalement la fonctionnalité de génération des fichiers Sitemaps de WordPress si celle-ci ne vous intéresse pas (ou plus...). Pour ce faire, ajoutez la ligne suivante dans votre fichier functions.php :

add_filter( 'wp_sitemaps_enabled', '__return_false' );

Sachez que si vous avez indiqué dans WordPress que vous ne souhaitez pas que les moteurs de recherche indexent votre site, alors les Sitemaps XML ne sont pas générés. Cela ne se fait que si l'option est décochée dans les paramètres (dans "Réglages > Lecture" pour rappel).