То, что вы ищете, называется декоратором поста. Это хук, который позволяет запускать скрипты перед отрисовкой каждого поста. Он является частью API плагинов.
Теперь о том, что вы хотите сделать (перенаправлять все внешние ссылки). Я не думаю, что добавлять столько трений — хорошая идея, поэтому я не могу помочь вам с этим — тем более что вы уже разобрались с этим моментом. Тем не менее, вот прокомментированный пример того, как можно настроить систему, нацеленную на все внешние ссылки в постах.
Это размещается в секции header вашей темы или компонента темы:
<script type="text/discourse-plugin" version="0.8">
// Сохраняем имя хоста, чтобы можно было использовать его повторно.
const siteHostname = location.hostname;
// Создадим декоратор для выполнения этого в каждом посте
api.decorateCooked(
post => {
// Есть ли в посте ссылки?
const links = [...post[0].querySelectorAll("a")];
// Ссылок нет, выходим.
if (!links.length) return;
// Ссылки есть, отфильтруем их и возьмём только внешние
const externalLinks = links.filter(
link => link.hostname !== siteHostname
);
// Если есть внешние ссылки, выполним некоторые действия. Например, можно
// добавить класс к каждой внешней ссылке следующим образом.
externalLinks.forEach(link => {
link.classList.add('external-link');
// Здесь можно выполнить дополнительные действия.
});
},
// Присваиваем декоратору идентификатор, чтобы избежать утечек памяти.
{ id: "external-link-decorator" }
);
</script>
Ещё раз: перенаправление пользователей создаёт слишком много трения и быстро станет раздражающим. Поэтому я бы рассмотрел другой подход, например, добавление небольшой иконки рядом с внешними ссылками и обучение пользователей тому, что она означает?
