Depuis WordPress 5.1, le CMS ajoute automatiquement les attributs rel="noopener noreferrer" à tous les liens ouverts dans un nouvel onglet (target="_blank"). Cette mesure renforce la sécurité, mais peut poser un problème pour les liens d’affiliation et certaines intégrations marketing.
Dans cet article, vous allez apprendre à supprimer uniquement noreferrer tout en conservant noopener, la partie réellement utile pour la sécurité.
Pourquoi WordPress ajoute rel="noopener noreferrer"
Lorsqu’un lien s’ouvre dans un nouvel onglet, la page cible peut, en théorie, utiliser window.opener pour modifier ou rediriger la page d’origine.
C’est ce qu’on appelle une attaque par tab-napping.
Pour éviter cela, WordPress ajoute automatiquement deux attributs :
noopener: empêche la page cible d’accéder àwindow.opener.noreferrer: masque l’URL de provenance (le referrer), empêchant le site visité de savoir d’où vient le clic.
Si le premier est essentiel, le second peut être gênant, notamment dans le cas de liens d’affiliation ou de campagnes de tracking.
Quand noreferrer devient problématique
Certains systèmes d’affiliation, régies publicitaires ou outils d’analyse de trafic utilisent le referrer pour identifier la provenance des visiteurs. Or, l’attribut noreferrer bloque cette information.
Résultat :
- Les clics ne sont plus correctement suivis.
- Les conversions peuvent ne pas être attribuées à votre site.
- Vos statistiques de provenance deviennent incomplètes.
Si vous gérez des partenariats ou des liens sponsorisés, il est donc préférable de supprimer noreferrer tout en gardant noopener pour la sécurité.
Supprimer noreferrer via un simple snippet PHP
WordPress fournit un filtre natif, wp_targeted_link_rel, qui permet de modifier les attributs ajoutés aux liens.
Voici comment l’utiliser pour supprimer uniquement noreferrer.
Code à copier dans votre thème enfant
Ajoutez ce snippet dans le fichier functions.php de votre thème enfant
/**
* Supprime "noreferrer" des liens WordPress ouverts dans un nouvel onglet.
* Conserve "noopener" pour la sécurité.
*/
add_filter('wp_targeted_link_rel', function ($rel, $link) {
// Retire uniquement "noreferrer" de la chaîne
if (strpos($rel, 'noreferrer') !== false) {
$rel = str_replace('noreferrer', '', $rel);
}
// Nettoie les espaces éventuels
$rel = trim(preg_replace('/\s+/', ' ', $rel));
// Si la chaîne est vide, retourne null pour éviter rel=""
return $rel ?: null;
}, 10, 2);
Exemple avant et après l’installation du snippet
Avant (comportement par défaut de WordPress) :
<a href="https://exemple.com" target="_blank" rel="noopener noreferrer">
Visiter le site partenaire
</a>
Après (avec le filtre actif) :
<a href="https://exemple.com" target="_blank" rel="noopener">
Visiter le site partenaire
</a>
Le lien reste sécurisé grâce à noopener, mais transmet à nouveau le referrer au site cible.
Vos liens d’affiliation et outils de suivi fonctionneront normalement.
Explications du fonctionnement du filtre
wp_targeted_link_relest exécuté à chaque génération de lien avectarget="_blank".- WordPress lui passe deux paramètres :
$rel: la chaîne d’attributsrelactuelle,$link: le lien complet.
- En interceptant ce filtre, le code supprime le mot
noreferreret nettoie la chaîne restante. - Si rien ne reste, WordPress n’ajoute aucun attribut
rel=""vide.
Bonnes pratiques et précautions
- Ne retirez jamais
noopener: c’est lui qui protège contre les attaques par tab-napping. - Testez vos liens externes après avoir ajouté le code pour vérifier leur comportement.
- Videz votre cache si vous utilisez un plugin de mise en cache (LiteSpeed, WP Rocket, etc.), afin que les pages soient régénérées avec le nouveau code.
- Mettez le code dans le thème enfant, jamais dans le thème parent, pour éviter de le perdre lors d’une mise à jour.
Résumé
- WordPress ajoute automatiquement
noreferrersur les liens ouverts dans un nouvel onglet. - Cet attribut empêche le suivi du referrer, ce qui gêne les liens d’affiliation.
- En utilisant le filtre
wp_targeted_link_rel, il est possible de supprimer uniquementnoreferrertout en gardantnoopener. - Le snippet présenté ici est léger, sûr et compatible avec tous les constructeurs de pages.






