FProd.net Blog, à suivre… création web, design, ajax, css, php et mysql, vidéos, MacOS et l’univers Apple, …

à suivre…

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 :

  1. ne pas faire de liens qui s'ouvrent dans une nouvelle fenêtre
  2. 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 :

PHP:
  1. $target = $row->link_target;
  2.     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 :

PHP:
  1. if ($target == "_blank")
  2.     $target = ' class="lien_ext"';
  3. else
  4.     $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.

JavaScript:
  1. <script type="text/javascript">
  2. function open_ext_link()
  3. {
  4.     var liens = document.getElementsByTagName('a');
  5.     for (var i = 0 ; i <liens.length ; ++i)  {
  6.         if (liens[i].className == 'lien_ext')  {
  7.             liens[i].onclick = function()  {
  8.                 window.open(this.href);
  9.                 return false;
  10.             };
  11.         }
  12.     }
  13. }
  14.  
  15. window.onload = function () {
  16.     open_ext_link();
  17. };
  18. </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 ;)

del.icio.us:Wordpress et les liens vers le monde extérieur digg:Wordpress et les liens vers le monde extérieur spurl:Wordpress et les liens vers le monde extérieur wists:Wordpress et les liens vers le monde extérieur simpy:Wordpress et les liens vers le monde extérieur newsvine:Wordpress et les liens vers le monde extérieur blinklist:Wordpress et les liens vers le monde extérieur furl:Wordpress et les liens vers le monde extérieur reddit:Wordpress et les liens vers le monde extérieur fark:Wordpress et les liens vers le monde extérieur blogmarks:Wordpress et les liens vers le monde extérieur Y!:Wordpress et les liens vers le monde extérieur smarking:Wordpress et les liens vers le monde extérieur magnolia:Wordpress et les liens vers le monde extérieur segnalo:Wordpress et les liens vers le monde extérieur gifttagging:Wordpress et les liens vers le monde extérieur

Tags: et

1 commentaire

  1. fortin 29 décembre 2006 14:44

    même chose pour WP 2.0.5

Laisser un commentaire