Wordpress et les liens vers le monde extérieur
Dans la version 2.0.4 de WordPress utilisée sur ce site, les liens qui s'ouvrent dans une nouvelle fenêtre sont gérés avec l'attribut target="_blank" mais cet attribut rend les pages non valides par rapport aux standard XHTML 1.0 Strict (et sup.). Des solutions existent si vous êtes un extrémiste de la validation :
- ne pas faire de liens qui s'ouvrent dans une nouvelle fenêtre
- bidouiller le code de WordPress
La première ne nous intéressant pas, nous allons passer directement à la seconde pour montrer comment ce problème a été "résolu" sur ce blog.
Il faut aller chercher le fichier qui gère les liens : wp-includes/links.php
dedans, vous trouverez les lignes qui gèrent le target :
-
$target = $row->link_target;
-
if ('' != $target) {
La ligne suivant est $target = ' target="' . $target . '"'; elle prend l'attribut target stocké en base de donnée (ici _blank) et l'insère. Nous allons donc modifier cette ligne, ou plutôt rajouter quelques lignes avant pour gérer l'attribut _blank :
-
if ($target == "_blank")
-
$target = ' class="lien_ext"';
-
else
-
$target = ' target="' . $target . '"';
Les liens devant s'ouvrir dans une nouvelle fenêtre auront désormais l'attribut class à lien_ext au lieu de l'attribut target. C'est cet attribut class que nous allons réutiliser ci-dessous.
Ouvrons maintenant wp-content\themes\*****\header.php, le fichier qui gère l'entête de la page de votre thème préféré. Juste avant la balise , nous allons ajouter quelques lignes de Javascript pour gérer nos liens.
-
<script type="text/javascript">
-
function open_ext_link()
-
{
-
var liens = document.getElementsByTagName('a');
-
for (var i = 0 ; i <liens.length ; ++i) {
-
if (liens[i].className == 'lien_ext') {
-
liens[i].onclick = function() {
-
window.open(this.href);
-
return false;
-
};
-
}
-
}
-
}
-
-
window.onload = function () {
-
open_ext_link();
-
};
-
</script>
Ce code javascript va, au chargement de la page, chercher tous les liens qui ont l'attribut class à la valeur lien_ext et va remplacer le comportement du lien par un window.open.
ATTENTION : si vous avez déjà un window.onload dans un autre javascript, vous risquez de rencontrer un problème, à vous d'adapter la chose pour votre utilisation ![]()

Tags: F.Prod et site
1 commentaire
Laisser un commentaire
même chose pour WP 2.0.5