Skip to content

In questo blog ho sempre seguito la regola di applicare target=”_blank” a tutti i link in uscita. L’attributo _blank forza il browser ad aprire il link in una nuova tab del browser lasciando l’utente sulla pagina che sta visitando. Giusto o sbagliato che sia a livello di usability non è il punto di questa guida, voglio dare per scontato che tu abbia già valutato le tue necessità.

Tuttavia target=”_blank” causa alcune vulnerabilità note ed andrebbe sempre accompagnato dall’attributo rel=”noopener”.

Inserire a mano target=”_blank” e rel=”noopener” in ogni link esterno non è efficace: mi posso dimenticare ad esempio, posso saltarne qualcuno. Ho quindi cercato un modo per automatizzare l’inserimento dell’attributo _blank e noopener su tutti i link in uscita, io non devo fare niente.

Dato che amo semplicità e minimalismo (nel mio sito web, non nella vita) e non volevo usare plugin di dubbia provenienza, l’ho assemblato mettendo insieme due righe di PHP ed un JavaScript che ho trovato dopo qualche ricerca.

Il risultato è questo plugin che puoi scaricare e caricare sul tuo sito. Il plugin sfrutta un semplice codice JavaScript che identifica tutti i link che non fanno parte del dominio del sito web e applica l’attributo target=”_blank” e rel=”noopener” in automatico.

<?php
/*
Plugin Name: EVE Target _blank + noopener
Plugin URI: https://www.evemilano.com/
Version: 2.10 201905
Description: This plugin automatically inserts target blanks and rel noopener to all outgoing links
Author: Giovanni Sacheli
Author URI: https://www.evemilano.com/about-me/
*/


//* --- TARGET BLANK EXTERNAL LINKS --- *//
function eve_blankext() {
	?>
	<script type="text/javascript">
	(function($) {
		jQuery( document ).ready(function() {
			add_target_blank_to_external_links();
			});
	function add_target_blank_to_external_links(){
    $('a[href^="http://"], a[href^="https://"]').not('a[href*="'+location.hostname+'"]').attr({target: "_blank", rel: "noopener"});
	}
	})(jQuery);
	</script>
	<?php
	}
add_action('wp_footer', 'eve_blankext' );

Basta caricare il plugin, attivarlo ed il gioco è fatto.

Installa il plugin WordPress

Per usare questo plugin sul tuo sito segui questi piccoli passi:

  1. Copia il codice del plugin che vedi qui sopra
  2. Incolla il codice in notepad
  3. Salva il file come “external-link-blank.php”
  4. Comprimi il file PHP con Zip e crea un archivio compresso
  5. Naviga nella sezione “Plugin” si WordPress
  6. Carica il plugin e attivalo
  7. Il plugin inserisce un piccolo codice JavaScript prima del tag </body>
  8. Finito!

Cosa succede se in precedenza avessi inserito a mano dei target=”_blank” su alcuni link in uscita? Potresti ritrovarti con un doppio attributo target=”_blank” applicato ai link in uscita.

Meglio rimuovere tutti gli attributi inseriti a mano e lasciar lavorare solo il plugin. Vediamo come fare.

Rimuovi tutti i target=”_blank” dal testo dei post con MySQL

Attenzione: procedura ad alto rischio! Procedi solo se sai quello che stai facendo e dopo aver fatto un backup del database.

Per questa attività serve MySQL, in particolare devi lanciare un comando che andrà a cercare la stringa target="_blank" nel testo dei tuoi articoli e la rimuove. Puoi anche lanciare il comando da phpMyAdmin. Più facile a farsi che a dirsi…

  1. Apri la console SSH, un software per collegarti al server MySQL oppure usa phpMyAdmin
  2. Apri il database
  3. Fai un backup/dump del database
  4. Apri la tabella wp_posts
  5. Naviga nella tab SQL dalla quale si possono lanciare i comandi
  6. Digita questo comando e premi GO
UPDATE `wp_posts` SET post_content = REPLACE(post_content, 'target="_blank"', '')

Sostituisci il prefisso della tabella wp_post se il tuo è differente, nell’esempio ho usato la nomenclatura standard di WordPress.

Ecco fatto, a meno che tu non abbia sbagliato comando, nella tabella dei post del tuo database dovrebbero essere sparite tutte le stringhe target=”_blank”

Nel caso invece il processo fosse andato male, recupera il tuo dump, come ho fatto io la prima volta che ho cancellato tutto il database.

Ricordati, il vecchio saggio disse:

Il backup è quella cosa che dovevi fare prima!

Articoli correlati

Autore

Commenti |10

Lascia un commento Lascia un commento
  1. Carlo Casciaro 2 commenti

    Pensavo, il fatto che lo genera un JS, gli potrebbe falsare il tempo di permanenza nella pagina, se riuscisse a capirlo, potrebbe penalizzare o cambiare le modalità di come considera il sito?

    1. Giovanni Sacheli 756 risposte

      Ciao Carlo, grazie per questa interessante e complessa domanda.

      Per rispondere alla questione tecnica ti posso dire che, a livello di indicizzazione, l’attributo target=”_blank” viene individuato e salvato nell’HTML da Google, dato che in fase di rendering della pagina esegue il piccolo codice JavaScript (il plugin lo testo da diverso tempo su questo blog). Non c’è differenza tra un _blank inserito direttamente nell’HTML o via JavaScript. Nel secondo caso serve solo più tempo affinché Google lo individui, il risultato però è il medesimo. Hai presente che ci sono pazzi (in senso amichevole, Matteo Zambon) che inseriscono le meta oppure il tag rel canonical via Google Tag Manager, quindi con JavaScript? Un target=”_blank” è molto meno SEO-rilevante rispetto agli esempi fatti da Matteo quindi non vedo il problema.

      La risposta relativa a tempi di permanenza & co invece è più articolata. Cosa cambia se da una pagina di un sito apro un link in uscita in _blank oppure no? Perché dovrebbero cambiare i KPI?

      La durata di una sessione è data dal tempo tra la prima azione e l’ultima compiuta su un sito web. Se esco direttamente o esco in un’altra tab e non torno più, entrambe le sessioni verranno resettate dopo 30 minuti di inattività.

      E nel caso l’utente torni sulla tab abbandonata? Be meglio così, non sto certo barando. L’attributo target _blank è uno standard HTML non un trucco.

      La questione però non finisce qui, anzi inizia proprio da qui. Pensi che Google utilizzi i dati di Analytics per valutare il tuo sito? Per continuare il ragionamento ti invito a leggere questo post.

      Mi piacerebbe sapere cosa ne pensi, a presto!

  2. Fabio Sermatica 8 commenti

    Ciao,
    alcuni temi su WordPress lo fanno in automatico, o meglio basta un flag per abilitarlo o disabilitarlo.
    Comunque ottimo spunto

    1. Giovanni Sacheli 756 risposte

      Grazie del commento Fabio.
      Cosa succere però se cambi tema e quello nuovo non ha quella funzione?
      Con un plugin risolvi il problema :D
      A presto!

  3. Alessandra Forlani 1 commento

    Salve, ho letto il tuo interessante articolo e mi sto chiedendo se potesse valere anche per il aso contrario. Io ho un problema con un portfolio su un tema ThemeForest che mi apre ogni link su una nuova pagina e vorrei sostituire il target _blank con il _self. E’ possibile farlo col tuo JS mettendo sel al bosto di blank? o sto sparando una sciocchezza enorme?
    Se puoi fammi sapere perché sono alla disperazione.
    Grazie
    Alessandra

    1. Giovanni Sacheli 756 risposte

      Ciao Alessandra, no non è così semplice. Prima lo script dovrebbe cercare tutti i link che hanno attributo _blank e poi dovrebbe rimuoverlo. Questo non lo ottieni facendo una semplice sostituzione nello script, andrebbe fatta una funzione differente, ad esempio con jQuery:

      $(‘a[target=”_blank”]’).removeAttr(‘target’);

      oppure:

      Array.from(document.querySelectorAll(‘a[target=”_blank”]’))
      .forEach(link => link.removeAttribute(‘target’));

      Fonte: https://stackoverflow.com/questions/10098898/remove-all-target-blank-from-links

  4. Giulia 1 commento

    Ciao! Grazie mille per l’utilissimo spunto, io ho provato ad installarlo ma purtroppo mi risulta “operazione fallita”. Ho seguito alla lettera le tue indicazioni. Ci può essere un motivo? Grazie in anticipo per l’eventuale risposta.

    1. Giovanni Sacheli 756 risposte

      Ciao Giulia, potresti darmi più informazioni sul messaggio di errore mostrato da WordPress? Il tuo sito web usa il protocollo HTTPS?

  5. GraphOGLRisorse 1 commento

    Salve, vorrei far notare che all’inizio dell’articolo, è presente una ripetizione della seconda e terza frase. Più precisamente, da qui:” L’attributo _blank forza il browser ad aprire il link […]”

    Cordiali saluti.

    1. Giovanni Sacheli 756 risposte

      Grazie mille, dannato Gutenberg :D

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi articoli aggiornati

Richiedi un preventivo SEO e Google Ads

Porta il tuo sito web al livello successivo con l’expertise di EVE Milano. La nostra agenzia di Search Marketing ha ricevuto oltre 1130 richieste di preventivo, un segnale chiaro della fiducia che imprenditori e manager, come te, ripongono nella nostra specializzazione tecnica e verticale nella SEO e PPC. Se la tua organizzazione cerca competenze specifiche per emergere nei risultati di Google, noi siamo pronti a fornire quel valore aggiunto. Affidati alla nostra esperienza per fare la differenza.
Richiedi un preventivo

Non perderti altre guide, iscriviti per ricevere un avviso mensile con gli aggiornamenti del blog!

Iscriviti alla newsletter!

Informativa sui cookies

Noi e terze parti selezionate utilizziamo cookie o tecnologie simili per finalità tecniche e, con il tuo consenso, anche per le finalità di esperienza e misurazione come specificato nella cookie policy. Puoi liberamente prestare, rifiutare o revocare il tuo consenso, in qualsiasi momento, accedendo al pannello delle preferenze. Il rifiuto del consenso può rendere non disponibili le relative funzioni. Usa il pulsante “Accetta” per acconsentire. Usa il pulsante “Rifiuta” per continuare senza accettare.