Pagina di reindirizzamento per URL esterni

Quello che stai cercando si chiama “post decorator”. È un hook che ti permette di eseguire script prima che ogni post venga renderizzato. Fa parte della plugin API.

Ora, riguardo a ciò che vuoi fare (reindirizzare tutti i link esterni). Non penso che aggiungere così tanto attrito sia una buona idea, quindi non posso aiutarti con questo — per di più hai già risolto quella parte. Detto questo, ecco un esempio commentato su come creare una configurazione che individui tutti i link esterni nei post.

Questo va inserito nella sezione header del tuo tema o componente del tema:

<script type="text/discourse-plugin" version="0.8">
  // Memorizza il nome host per poterlo riutilizzare.
  const siteHostname = location.hostname;
  
  // Creiamo un decorator per farlo in ogni post
  api.decorateCooked(
    post => {
      // Il post contiene link?
      const links = [...post[0].querySelectorAll("a")];
      
      // Nessun link, esci.
      if (!links.length) return;
      
      // Abbiamo dei link, filtriamoli e prendiamo solo quelli esterni
      const externalLinks = links.filter(
        link => link.hostname !== siteHostname
      );
      
      // Se ci sono link esterni, possiamo fare qualcosa. Ad esempio, possiamo
      // aggiungere una classe a ogni link esterno come segue.
      externalLinks.forEach(link => {
        link.classList.add('external-link');
        // Fai altro lavoro qui.
      });
    },
    // Assegniamo un ID al decorator per prevenire perdite di memoria.
    { id: "external-link-decorator" }
  );
</script>

Ancora una volta, reindirizzare gli utenti crea troppo attrito e diventerà rapidamente fastidioso. Quindi, ti consiglio di considerare un approccio diverso, come ad esempio aggiungere un’icona sottile accanto ai link esterni e insegnare agli utenti cosa significa?