Modifier en php le paramètre index / noindex de YOAST SEO (WordPress)

Logo PHP PHP
Logo Wordpress Wordpress

Par ,
Publié le 16 mai 2020

Si vous utilisez le CMS WordPress, vous êtes certainement familier du plugin YOAST SEO, l’une des meilleure extensions pour gérer son référencement naturel (SEO).

Pour référencer ses pages par google, il est nécessaire d’ajouter la balise <meta name="robots" content="index, follow" /> dans le header de toutes les pages de votre site. Si vos pages n’ont pas cette balise avec le paramètre « index », ne vous inquiétez pas. Google considère que toute page peut être indexée, tant que votre meta robot n’indique pas « noindex ». Le paramètre « follow » indique aux robots des moteurs de recherches (dont google) qu’ils peuvent analyser cette page. le paramètre « index » indique que la page doit apparaître dans les résultats de recherche.

Pour modifier cet attribut index / noindex avec le plugin Yoast, il y a plusieurs manières de faire :

  1. Modifier les paramètres par défauts dans le menu « Réglages SEO », pour chaque type de contenu (posts, pages, taxonomies…).
  2. Modifier ce paramètre page par page, grâce à la métabox Yoast SEO > Réglages avancés > « Autoriser les moteurs de recherche à indexer cette page ? ».
  3. Il est également possible de modifier la balise meta robot automatiquement en PHP, sans avoir à modifier ces réglages. Il suffira d’ajouter quelques lignes de php dans le code de votre site.

Ici on va explorer cette 3ème solution. Alors premièrement, à quoi çela sert de mettre à jour automatiquement ce champs ? Simplement à gagner du temps. Dans mon cas, les éditeurs de mon site mettent à jour le contenu en front-end, sans aller sur l’administration du site. Ainsi, je souhaite qu’une nouvelle page soit indexée automatiquement dès que son contenu est mis à jour. Ma page passera donc de « noindex » (réglages par défauts) à « index » lorsqu’un éditeur a ajouté du contenu.

Mettre à jour le paramètre index / noindex en PHP.

Ce réglage « index/noindex » est stocké dans le custom field _yoast_wpseo_meta-robots-noindex, pour chaque post ou chaque page. On va donc mettre à jour ce champs.

  • Si _yoast_wpseo_meta-robots-noindex est nul, alors le réglage SEO par défaut sera utilisé.
  • Si _yoast_wpseo_meta-robots-noindex est égal à ‘1’, alors la balise meta robot contiendra de votre post « noindex ».
  • Si _yoast_wpseo_meta-robots-noindex est égal à ‘2’, la balise meta robot contiendra « index ».

Attention : pour les taxonomies, ce paramètre n’est pas stocké dans un custom field. Il faudra donc faire autrement. (Voir en seconde partie).

Pour mettre à jour le paramètre index / noindex de yoast SEO en php, je vais ajouter cette ligne de code (bien sur à l’endroit oèu je souhaite qu’elle s’exécute).

update_post_meta($post_ID,'_yoast_wpseo_meta-robots-noindex', '2');

Exemple 1 : Sur un template single.php, je souhaite mettre à jour le champs, dès qu’un éditeur met à jour le contenu.

// si l'utilisateur soumet mon formulaire
if(isset($_POST['submit'])){
  // alors je passe mon post en INDEX
  update_post_meta($post_ID,'_yoast_wpseo_meta-robots-noindex', '2');
}

Exemple 2 : Sur la partie admin, je souhaite que mon post passe en INDEX, uniquement si un éditeur a rempli différentes informations.

Attention, pour que cela fonctionne, il va falloir désactiver le widget sur vos custom posts. (Si vous mettez à jour le paramètre de Yoast, le widget va enregistrer par dessus le paramètre).

// Dans mon fichier functions.php
// Si un utilisateur modifie un article ou un custom post
function save_{custom_post}_metaboxes($post_ID){
  // Si l'utilisateur a rempli 2 éléments, alors je passe mon article en INDEX
  if(isset($_POST['sous_titre']) || $_POST['video']){
    update_post_meta($post_ID,'_yoast_wpseo_meta-robots-noindex', '2');
  }
add_action('save_post','save_{custom_post}_metaboxes');

Cas particulier pour les taxonomies

Pour les taxonomies, Yoast SEO n’enregistre pas ce paramètre dans un custom field, mais dans ses propres tables. Il va falloir modifier directement les tables du plugin. Heureusement, yoast a mis à disposition la fonction (hook) WPSEO_Taxonomy_Meta::set_value()pour cela.

// Je règle le paramètre de ma taxonomie sur INDEX.
WPSEO_Taxonomy_Meta::set_value((int) $term_id, $term->taxonomy, 'index');

Si vous avez des questions, n’hésitez pas à les mettres en commentaire :).

S’abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires