Ich weiss, dass es auch mit wordpress nur schwer gelingt, validen XHTML Code rauszuschmeissen, aber man sollte sich doch bemühen, so nah daran zu sein, wie nur irgend möglich. Das Tutorial geht davon aus, das externe Links mit rel="external" gekennzeichnet sind. Um dies zu erreichen, kann man das natürlich in seinem Post selbst erledigen, oder aber man nimmt sich das bereits vorhandene Plugin Identify External Links.
Dort gibt es eine Funktion, die man leicht für diese Zwecke editieren kann:
function parse_external_links($matches){
if ( wp_get_domain_name_from_uri($matches[3]) != wp_get_domain_name_from_uri($_SERVER["HTTP_HOST"]) ){
return '‘ . $matches[5] . ‘‘;
} else {
return ‘‘ . $matches[5] . ‘‘;
}
}
?>
man tausche einfach das class="extlink" mit rel="external" und schon sind die Links richtig markiert.
Nun gilt es noch das Javascript richtig einzubinden und mit dem Onload Event zu verbinden. Das Einbinden nimmt man entweder per Hand im header seines Themes vor, oder benutzt eine kleine Wordpress Action:
function insert_externallinks_script(){
echo '‘;
}
add_action(’wp_head’,'insert_externallinks_script’);
?>
Natürlich muss die Datei externallinks.js dann im Stammverzeichnis des Webservers liegen. Jetzt muss in dieser Datei unter Umständen der Onload Event verbessert werden. Je nachdem, ob schon weitere Javascripts eingebunden wurden, überschreibt man sonst so den OnloadHandler.
var oldonload = window.onload;
if (typeof window.onload != ‘function’) {
window.onload = function() {
externalLinks();
liveSearchInit();
}
} else {
window.onload = function() {
oldonload();
liveSearchInit();
externalLinks();
}
}
Es wird erst ausgelesen, ob schon eine Funktion mit dem OnloadHandler verknüpft wurde. Wenn nein, wird die neue Funktion damit verbunden, sonst wird eine neue Funktion erstellt, welche die alte aufruft und anschliessend die externalLinks(). Der Autor des livesearch-plugins wollte z.B. dass die livesearchInit per onload geladen wird:
Da dies aber jede vorher konfigurierte OnLoad Funktion überschreiben würde, habe ich sie kurzerhand hierhin verlagert. Und was soll ich sagen, externe Links öffnen sich in einem neuen Fenster und die LiveSuche funktioniert auch noch.
Mit Hilfe von CSS (Ja, auch CSS unterstützt Attribute Selektoren) kann man die externen Links dann auch noch gesondert stylen.