Comment bien utiliser les filtres sur les méta robots dans les plugins SEO ?

- 1 - Création et optimisation d’un site complexe avec WordPress
- 2 - Comment bien utiliser les filtres sur les méta robots dans les plugins SEO ?
Lorsqu’on a beaucoup de termes, il est classique d’en avoir aussi beaucoup avec très peu d’articles. Donc avec des archives “pauvres” qui sont un signal moyen pour Google, risquent de consommer son budget crawl, etc. La solution brutale est de mettre la taxonomie en noindex par défaut (ce qui est recommandé par beaucoup, par exemple pour les tags), mais on peut jouer plus finement, au niveau de chaque terme, en le mettant, ou pas, en noindex. Selon la taille du site, ça peut être une tâche énorme. Et surtout, la surveillance doit se faire au fur et à mesure de la création des termes…. Les filtres permettent de gérer ça automatiquement.
Usecase : un site de cuisine, avec beaucoup de termes, donc beaucoup sont “non indexables”
Donc avant que vous commenciez à me dire
oui mais en fait tu devrais gérer tes termes et faire le nettoyage, si tu as trop de termes inutiles, c’est que ton site est mal géré
voilà l’origine du besoin.
Dans WP Recipe Maker, les ingrédients (et plein d’autres choses) sont des custom taxonomies. Avec donc une multiplicité de termes, créés à la volée quand on saisit une recette. Certains m’intéressent beaucoup pour le référencement (comme le safran), d’autres pas du tout.
Qui voudrait référencer une page sur “les recettes qui utilisent de l’eau” par exemple ?
Donc je ne peux pas “supprimer les termes” puisqu’ils sont utiles, et je n’ai pas envie de repasser à chaque fois que j’ai fait une recette, sur tous les termes, individuellement, pour décider si oui ou non je les indexe. Un certain nombre (eau, poivre, etc.) sont exclus a priori, et pour les autres, j’ai développé une fonction qui me dit quand je peux commencer à les indexer, que je passe en argument à mon filtre sur la méta robots.
Les filtres sur les méta robots, késako ?
Tous les plugins SEO proposent des fonctions de base pour l’indexation et pour la construction du sitemap. On choisit à haut niveau les types de posts et les taxonomies qu’on souhaite (ou pas) indexer et qu’on souhaite (ou pas) inclure dans le sitemap. Choix qui peuvent ensuite être modifié individuellement sur la page d’édition du contenu ou du terme.
On peut aussi, et ça a l’air bien pratique, modifier ces valeurs dynamiquement, en appliquant des critères. Par exemple, si le post a été publié il y a plus de trois ans, ou si le terme fait référence à une année dans son nom ou sa description.
C’est pratique pour deux raisons : quand on a beaucoup d’éléments à individualiser, en mode feignasse, c’est plus simple d’écrire quelques lignes de code que de repasser à la main à travers des centaines ou des milliers d’éléments. Et si, pour une raison ou une autre, la raison pour laquelle on veut modifier ces valeurs peut changer, c’est mieux a priori (j’insiste sur le a priori) de le faire dynamiquement, plutôt que de modifier les valeurs dans la base de données.
Pour cela, tous les plugins SEO (en tout cas ceux sur lesquels je travaille) proposent un filtre :
- All In One SEO : aioseop_robots_meta
- RankMath : rank_math/frontend/robots
- SeoPress : seopress_titles_noindex
- SmartCrawl : wds-taxonomy-meta-wds_noindex
- WordPress SEO (Yoast) : wpseo_robots
(Comme ça vous n’aurez pas besoin de les chercher, si vous décidez de faire le contraire de ce que je vous conseille, et de les utiliser).
Donc je fais ma petite fonction, je la mets dans le bon et ça marche.
Sauf que…
C’est bien d’éviter de mettre dans le sitemap des contenus en noindex
Parce que Google n’aime pas, et vous ressort des erreurs dans la SearchConsole. En des temps où le budget crawl est limité, c’est assez couillon de l’envoyer se casser le nez sur des pages que vous ne voulez pas indexer, généralement parce qu’elles ne sont pas très intéressantes. Le cas classique : l’archive de taxonomie qui a juste trois articles sur un mot clé pourri, qu’un de vos auteurs a mis parce qu’il l’aime bien, mais sur lequel vous ne vous positionnerez jamais. Ou bien l’archive de taxonomie pour laquelle vous allez rédiger pendant les semaines qui viennent, et vous ne voulez pas que Google voit une page pauvre.
On est tous d’accord que ce n’est pas une erreur qui va plomber votre site :
Bonjour les #SEO, un petit sondage sur le #sitemap. Charger dans la search console un sitemap avec des éléments (nombreux) en noindex ou un sitemap vide, c'est :
— Marie-Aude Koiransky (@lumieredelune) 29 mai 2022
Mais, par contre, le “on s’en fout”, je ne suis pas d’accord. D’abord,
Vue que parfois ça peut être catastrophique, ça suffit à me faire dire que c’est cata tout court comme idée, même si c’est comme tu le dis qu’un mauvais signal dans d’autres cas.
Jamais bon d’offrir une boîte de chocolats à un gamin quand la moitié sont en fait en bois.— Régis Stéphant (@Ledzep_56) 30 mai 2022
Ensuite, perso, ça m’énerve de voir des centaines d’erreurs sur la Search Console et ça fait peur au client à qui il faut faire comprendre que ce n’est “pas grave”.
Cohérence entre robots=”noindex” et sitemap
On va donc s’intéresser maintenant à la cohérence entre la méta robots “noindex” et le contenu du sitemap. Elle est gérée de façon similaire par chacun des plugins que j’ai testés : si une archive de terme est en noindex parce que la taxonomie est en noindex globalement, ou parce qu’il a été marqué en noindex dans la boîte SEO du terme, normalement, il n’apparaît pas dans le sitemap.
- All In One SEO : il faut faire manuellement la synchronisation entre le noindex et l’inclusion dans le sitemap, pour les types de post comme les taxonomies.
- RankMath : si une taxonomie est en noindex dans les paramètres globaux, même si on active le sitemap, il n’est pas généré. Et dans une taxonomie en “doindex”, les termes en noindex et (selon l’option), les termes vides n’apparaissent pas.
- SeoPress : si on essaye d’activer le sitemap pour une taxonomie en noindex, SeoPress se fâche et signale que c’est une très mauvaise idée. Si on s’obstine, il génère un sitemap avec tous les termes, en noindex donc.
- SmartCrawl :
- WordPress SEO (Yoast) :
Mais tout ça ne prends pas en compte le filtre qu’on utilise pour changer la valeur de la meta. Ce qui est, d’une certaine façon, logique, puisque les filtres ne modifient pas les valeurs en base de données, mais quand même bien embêtant, puisqu’on va retrouver des termes en noindex dans les sitemaps.
NB : gros bug sur All In One SEO
J’utilise Post2Post pour lier à mes articles des informations complémentaires (comme dans cet article sur la Kafala, tout en bas “Plus d’informations”). Les informations complémentaires sont un custom post type en noindex, nositemap.

Le bug de sitemap est clair quand on voir les libellés.
Néanmoins AIOSEO se mélange les pinceaux et dans le sitemap d’une taxonomie, me mets des informations ou même des médias. L’ingrédient “ginger” est évidemment en anglais, les attachments n’ont pas de langue (et le domaine chipirojki est celui en français), dans le second et le troisième cas, une “infsup” ne devrait pas apparaitre et elle est en français (en fait il n’y a pas de gestion des langues sur ce post type). Cela semble être un enmêlage de pinceau avec WPML, mais je ne suis pas allée plus loin.
Solution 1 : filtrer aussi le sitemap
… quand c’est possible.
A nouveau, les 5 plugins fournissent un filtre,
- All In One SEO : aioseo_sitemap_exclude_terms (pour mémoire, non testé)/
- RankMath : rank_math/sitemap/entry
- SeoPress : seopress_sitemaps_term_single_query
- SmartCrawl : wds_terms_sitemap_include_term_ids
- WordPress SEO (Yoast) : wpseo_exclude_from_sitemap_by_term_ids
C’est une solution un peu lourde, puisqu’il faut passer à travers tous les termes pour les exclure – ou pas – du sitemap. Néanmoins, avec un bon plugin de cache, ça le fait.
Il faut que le filtre fourni fonctionne. Je n’ai pas réussi à faire fonctionner celui de SeoPress (et même sur une fonction hyper simple) mais c’est parce que mes doigts avaient fourchés et que je m’étais trompé dans le nom du filtre, quant à SmartCrawl, comme il n’y a aucune documentation et que cela se fait “à la demande”, ma demande n’a pas reçu de réponse. j’ai reçu une réponse par mail me disant qu’on pouvait changer les paramètres globaux d’un des sitemaps, mais que
Being said that, I’m afraid the general sitemap (sitemap.xml) items can’t be modified at this moment, or at least not in an intuitive way.
Pour que cela marche, il faut que le plugin sache qu’il a à faire des sitemaps pour la taxonomie et donc, cf. plus haut, qu’elle soit par défaut en “index” et “inclure dans le sitemap”.
Or dans ce cas, on peut avoir une taxonomie avec aucun terme indexable.
- All In One SEO : pas testé, mais indique “sitemap vide ou en 404”. A noter que la version free ne permet pas d’exclure les termes vides des sitemaps.
- RankMath : renvoie une 404
- SeoPress : à tester
- WordPress SEO (Yoast) : renvoie un sitemap vide (This is expected and permissible behavior, dit-il)
Complément à la solution 1 : filtrer la liste des sitemaps
J’aime encore moi envoyer du 404 que du noindex ! Il reste donc à supprimer les sitemaps qui ne devraient pas apparaitre, chez AIOSEO ou chez RankMath puisque Yoast renvoie un sitemap vide.
- All In One SEO : aioseo_sitemap_indexes, pas testé
- RankMath : rank_math/sitemap/exclude_taxonomy
- WordPress SEO (Yoast) : wpseo_sitemap_index si vous voulez quand même l’utiliser.
La logique est de compter les termes indexables dans chaque taxonomie, et de supprimer le sitemap en question.
Solution 2 : faire une action sur “save posts”
L’autre solution est d’abandonner tous les filtres et de faire une action au moment de l’enregistrement de l’article (ou de la recette).
Passer à travers tous les termes liés à l’article, y compris ceux qui viennent d’être ajoutés ou supprimés, et les réévaluer pour aller modifier “en dur” la balise robots, généralement stokée dans la table term_meta.
Les avantages : peu de requêtes à chaque fois, pas de filtre supplémentaire sur les sitemaps.
Si cela fonctionne dans la plupart des cas, cela peut poser des difficultés dans plusieurs configurations :
- All In One SEO, encore lui, a décidé de stocker ces métas à part, dans une table non-standard, qu’il appelle “surface” et qui est similaire aux indexables de Yoast. Il ne fournit pas de hook pour modifier ces valeurs, il faut donc y aller en mode requête SQL à l’ancienne, avec tout ce que cela implique comme risques si quelque chose change dans la structure de la table.
- WordPress SEO (Yoast) a la même logique avec sa table indexables. Par contre, il conserve encore des metas. dans les tables correspondantes. Tout cela est expliqué dans cet article sur son blog.
- Dans un site multilingue, il est possible que le statut des termes ne soient pas synchronisé selon “notre” logique, alors que des plugins comme Yoast copient automatiquement la valeur de cette méta robots (et je pense qu’ils ont raison).
- Enfin, les plugins qui permettent de gérer les termes en masse passent par des requêtes dans la base de données, et pas par la mise à jour individuelle des articles.
Le choix entre les deux méthodes dépend donc de votre propre configuration, du plugin SEO que vous utilisez, etc.
Est-ce que cela vaut le coup de faire tout ça ?
Personnellement je pense que oui. C’est une façon moins brutale et permanente de gérer la catastrophe que peuvent être des tags trop nombreux, éparpillés, etc. C’est aussi une réponse aux cas où on a “besoin” d’avoir des termes sans vouloir les indexer.
Prise en compte de SeoPress
Le problème avec SeoPress venait de moi. (Je me disais aussi…) j’ai donc corrigé l’article, et je le complèterais en allant jusqu’au bout du process.
Bonjour, merci pour ce guide très complet et très utile ! C’est toujours un plaisir de lire vos articles, Je le mets dans mes favoris pour le réutiliser plus tard.