Hook WordPress qui se déclenche deux fois !?

Le metier de développeur web est parfois compliqué !

On tombe parfois sur des bugs très étranges sur lequel on passe des heures voir même des jours et qui peuvent remettre en question toute la rentabilité du projet.

Mon dernier en date est un hook WordPress qui se déclenchait deux fois.

Voici le hook en question :

add_action( 'wp', 'onload' );
function onload()
{
    if ('video' === get_post_type() && is_singular()){
     // Ajout d'une entrée dans ma base de donnée
    // ...
    }
}

Ce code, très simple, devait ajouter une entrée en base de donnée. Cela fonctionnait très bien SAUF que de temps en temps cela effectuait DEUX enregistrements.

Après de longues heures de recherche, de debug (et de depression), j’ai pu trouver l’origine du problème :

<link rel='prev' title='Ma vidéo précédente' href='http://localhost/****/video/ma-video-precedente/' />
<link rel='next' title='Ma vidéo suivante' href='http://localhost/****/video/ma-video-suivante/' />

WordPress définie par défaut ces deux balises permettant de définir un lien entre les contenus. Les Balises rel=”prev” et rel=”next” sont apparut en 2011 et permettent de faciliter le crawl de Google bot sur les contenus. Certains navigateurs (Chrome, Firefox…) l’utilisent pour augmenter la rapidité d’affichage de navigation entre les pages en pré-chargeant les contenus liés. Voila pour mon Hook se déclenchait deux fois !

Comment faire pour ne pas que le hook WordPress se déclenche deux fois ?

Il suffit d’ajouter cela dans votre fichier functions.php

remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );

J’espère vous avoir fait économiser tout ce temps que j’ai perdu 🙂

 

Une question ?

Nos experts se tiennent à votre disposition pour parler de votre projet.

Commenter