WordPress : Changer le code de reponse HTTP d’un post

De temps en temps, pour des questions SEO, j’ai besoin de changer le code HTTP de post de façon conditionnel. Cela permet de préserver le temps de crawl SEO. Sur des sites avec beaucoup de publications ( ou qui vont en avoir beaucoup dans l’avenir ) c’est important.

Le cas que je rencontre le plus souvent est celui-ci: diffuser des revues de presse; mais une fois sur deux c’est juste un lien externe avec un titre.
Dans ce genre de cas, je ne vais pas créer deux custom post type.
Je n’en fait qu’un seul et avec l’aide d’ACF, je créer deux groupes de champs qui obéissent à une logique conditionnel basé sur un champs Vrai/Faux.

Imaginons qu’avec ACF, j’ai nommé ma metabox Vrai/Faux « externe ». Je n’ai plus qu’a testé sa valeur avant que wordpress ne fasse une redirection du template. Voici un exemple:

// on change la priorité, et on la met un peut tardive au cas ou...
add_action('template_redirect', 'conditionnal_404',20);

function conditionnal_404(){
  // on test si notre post est de type xxx
  if(is_singular('article')) {
    // on recupere la valeur de la meta box Vrai/Faux d'ACF
    $externe = get_field('externe', get_the_ID());
    // si c 'est vrai
    if($type){
      global $wp_query;
      // on change la reponse HTTP pour les robots
      status_header(404);
      // on change la query global pour retourner le template 404
      $wp_query->set_404();
    }
  }
}

Avec ce genre de technique on peut facilement aller un peu plus loin. On peut, par exemple désactiver certains type de pages native sous Worpdress.

Soyons un peut violent, et dégageons plein de trucs qui généralement nous emmerde profondément. Brutalité, quand tu nous tiens…

add_action('template_redirect', 'conditionnal_404');

function conditionnal_404(){
  if( is_category() || is_tag() || is_date() || is_author() || is_attachment() || is_tax() ) {
    global $wp_query;
    status_header(404); 
    $wp_query->set_404();
  }
}

Evidemment ce genre de bout de code est à comprendre avant de le mettre sur votre site. Il faut réfléchir aux implications; qui; dans ce cas; seront nombreuses.
En gros, on supprime toutes les pages d’archives générées automatiquement par WordPress. L’idée est supprimer du temps de crawl inutile. Les robots n’ont pas que ça à foutre.

A noter: il peut être intéressant de regarder si il y a une action qui vient avant « template_redirect » ( probablement l’action « wp » mais à tester ) histoire de gratter quelques millisecondes de temps réponse de la part du serveur.

Voilà, je pense que vous avez compris qu’on peut aussi utiliser cette technique pour les redirections 301 ou 302 ou un autre code.
J’espère que cela vous sera utile!

Articles similaires

Commencez à saisir votre recherche ci-dessus et pressez Entrée pour rechercher. ESC pour annuler.

Retour en haut