Aprire tutti i link esterni con “_blank”

La possibilità di integrare nei propri contenuti di WordPress dei link che puntano a siti esterni è essenziale quando si vuole fare riferimento ad approfondimenti, fonti o altri riferimenti. Durante il processo di inserimento di un link si apre una finestra di dialogo nella quale è inserito, tra l’altro il comando “Apri in una nuova scheda”, che di default è disattivato. A discrezione dell’autore del contenuto, la levetta può essere posta a destra in modo da attivare la funzione.

A livello di codice, questa azione inserisce il tag target="blank" al link, in modo che questo si apra in una nuova scheda, permettendo così al lettore di leggere i contenuti linkati ma rimanendo sul sito di partenza.

Se le scelte editoriali del sito richiedono che tutti i link verso l’esterno siano di questo tipo può essere comodo trovare un metodo che risparmi di selezionare la funzione ogni singola volta. Una possibile soluzione è inserire il seguente codice nel file footer.php del proprio tema, meglio se in un tema child:

<script type="text/javascript">
//<![CDATA
jQuery(document).ready(function($) {
$('a').each(function() {
var a = new RegExp('/' + window.location.host + '/');
if (!a.test(this.href)) {
$(this).click(function(event) {
event.preventDefault();
event.stopPropagation();
window.open(this.href, '_blank');
});
}
});
});
//]]>
</script>

Il codice indicato funziona per tutti i link in uscita, è quindi anche retroattivo, mentre non funziona per i link interni al sito.

In alternativa si può aggiungere il seguente codice, sostianzalmente analogo, nel file functins.php:

add_action( 'wp_footer', 'awts_openlinks_innnewtab' ); // Write our JS below here
function awts_openlinks_innnewtab() { ?>

<script type='text/javascript'>
//<![CDATA[
//Open External Links in New Window - Script by STCnetwork.org
$(document).ready(function(){
$("#content a[href^=http], #content a[href^=https]")
.each(function(){
if (this.href.indexOf(location.hostname) == -1){
$(this).attr({ "target":"_blank" })}
if (this.href.indexOf(location.hostname) != -1){
if ( $(this).attr('target') == '_blank') {$(this).attr("target", "");}}
});});
//]]>
</script>
<?php
}

Il risultato sarà lo stesso del precedente, con la differenza che in questo caso il codice nel footer viene inserito tramite l’istruzione contenuta tra le funzioni.