Amélioration de la meta balise Robots dans WordPress

Depuis WordPress 5.7, la balise meta robots est gérée directement par le cœur grâce au filtre wp_robots. Par défaut, elle se contente d’ajouter max-image-preview:large sur les pages publiques, et noindex quand un site est configuré pour décourager les moteurs de recherche. C’est pratique, mais très limité : toutes les pages du site sont traitées de la même façon, qu’il s’agisse d’un article de fond, d’une page de résultats de recherche ou d’une archive par date.

Or, tout contenu n’a pas vocation à apparaître dans Google. Les pages de recherche interne, les erreurs 404, les archives d’auteur, les pages d’étiquettes ou les pages de pagination n’apportent généralement aucune valeur en résultats et peuvent diluer le référencement du site. Le code ci-dessous, sans extension SEO, permet de définir des règles précises selon le type de contenu : certaines pages sont exclues de l’index tout en laissant les robots suivre leurs liens, d’autres sont totalement ignorées, et le reste du site profite d’une indexation normale avec de grands aperçus d’images, d’extraits et de vidéos.

add_filter('wp_robots', 'wp_bk_robots');

function wp_bk_robots($robots) {

// Custom posts : noindex, mais liens suivis

if (is_singular('bk_cpt') || is_post_type_archive('bk_cpt')) {
  unset($robots['index'], $robots['max-image-preview']);
  $robots['noindex'] = true;
  $robots['follow'] = true;
  return $robots;
}

// Pages à ne pas indexer, sans suivre les liens

if (is_search() || is_404() || is_author() || is_attachment()) {
  $robots['noindex'] = true;
  $robots['nofollow'] = true;
  unset($robots['max-image-preview']);
  return $robots;
}

// Pages utiles pour la navigation, mais sans valeur en résultats

if (is_tag() || is_date() || is_paged()) {
  $robots['noindex'] = true;
  $robots['follow'] = true;
  unset($robots['max-image-preview']);
  return $robots;
}

// Tout le reste : indexation normale avec grands aperçus

$robots['index'] = true;
$robots['follow'] = true;
$robots['max-image-preview'] = 'large';
$robots['max-snippet'] = '-1';
$robots['max-video-preview'] = '-1';

return $robots;
}
Partager cette page:
Article Précédent