WordPress : des triggers pour se débarrasser de noopener et de noreferrer
Je n’aime pas que quelque chose me résiste en matière de technique informatique, même s’il m’est souvent arrivé de ne pas trouver de solutions idoines. Cette fois, concernant les valeurs noopener et noreferrer associés à l’attribut rel de la balise anchor, j’ai trouvé la solution.
La 1ère chose que vous devez faire, c’est de désactiver les extensions WordPress qui, à la manière de Nofollow for external link, ajoutent la valeur nofollow pour tous les liens externes à votre site. Et puis, vous devez créer deux triggers (déclencheurs en français) dans MySQL, soit par PhpMyAdmin si vous êtes en mutualisé ou à partir de l’interpréteur MySQL en auto-hébergé.Les déclencheurs s’exécutent dès que vous ajoutez, mettez à jour ou supprimez des enregistrements.
Le 1er concerne l’ajout de nouveaux posts et de nouvelles pages :
DELIMITER $$ DROP TRIGGER IF EXISTS before_insert_post$$ CREATE TRIGGER before_insert_post BEFORE INSERT ON wp_posts FOR EACH ROW BEGIN set NEW.post_content=REPLACE(NEW.post_content,' rel="nofollow"',' rel="nofollow"'); set NEW.post_content=REPLACE(NEW.post_content,' rel="follow noopener noreferrer"',' rel="follow"'); set NEW.post_content=REPLACE(NEW.post_content,' rel="noopener noreferrer"',' rel="follow"'); set NEW.post_content=REPLACE(NEW.post_content,' rel="nofollow noreferrer noopener"',' rel="nofollow"'); set NEW.post_content=REPLACE(NEW.post_content,' rel="follow noreferrer noopener"',' rel="follow"'); END $$ DELIMITER ;
Le second concerne la mise à jour des billets de blogs et des pages :
DELIMITER $$ DROP TRIGGER IF EXISTS before_update_post$$ CREATE TRIGGER before_update_post BEFORE UPDATE ON wp_posts FOR EACH ROW BEGIN set NEW.post_content=REPLACE(NEW.post_content,' rel="nofollow"',' rel="nofollow"'); set NEW.post_content=REPLACE(NEW.post_content,' rel="follow noopener noreferrer"',' rel="follow"'); set NEW.post_content=REPLACE(NEW.post_content,' rel="noopener noreferrer"',' rel="follow"'); set NEW.post_content=REPLACE(NEW.post_content,' rel="nofollow noreferrer noopener"',' rel="nofollow"'); set NEW.post_content=REPLACE(NEW.post_content,' rel="follow noreferrer noopener"',' rel="follow"'); END $$ DELIMITER ;
Lors de la mise à jour de votre CMS WordPress, pensez à vérifier que vos triggers sont toujours associés à votre table wp_posts.
SELECT trigger_schema, trigger_name, event_manipulation FROM information_schema.TRIGGERS WHERE event_object_table='wp_posts';