Мои скрипты
November 17, 2022

WordPress: скрыть внешние ссылки на JavaScript без сторонних плагинов

Плагин для скрытия внешних ссылок для любого сайта, адаптированный для CMS WordPress.

Это очень простой нативный JavaScript код, который перебирает в DOM все ссылки, подставляет к ним префикс и шифрует через base64.

Описание плагина

Плагин не имеет административного интерфейса и состоит лишь из маленького JavaScript кода и php файла, на который перенаправляются все ссылки.

  • полностью нативный JavaScript;
  • отдельная php-страница для переадресации пользователя;
  • белый список доменов в виде массива;
  • обработка страницы полностью на стороне клиента;
  • ничего не перезаписывается и не изменяется в структуре сайта;
  • шифрование ссылок для визуального эффекта.

Пример кода обработки ссылок

// #######################
    // СКРЫТИЕ ВНЕШНИХ ССЫЛОК
    // #######################

    // получаем все ссылки на странице
    var links = document.querySelectorAll('a[href]');

    // список исключений (слеш в конце обязательно)
    var exclude = [
    'https://exclude.name/',
    ];
        
    // проверяем каждую ссылку в цикле
    for(let i = 0; i < links.length; i++){

        // проверяем, что текущая ссылка не является доменом сайта          
        if(links[i].origin !== window.location.origin){

            // и вешаем на нее открытие в новой вкладке
            links[i].setAttribute('target', '_blank');

            // проверяем ссылку на наличие исключений
            if(!exclude.includes(links[i].href)){           

                // проверяем ее дополнительно на наличие rel="follow"
                if(links[i].getAttribute('rel') != 'follow'){

                    // декодируем в base64 и подставляем префикс /go/
                    links[i].href = '/go/' + btoa(links[i].href);

                    // или без редиректов через .htaccess
                    // links[i].href = '/go.php?go=' + btoa(links[i].href);
            

                }
            }
            
        }
        
    }

Файлы и более детальное описание

Все файлы, детальное описание и инструкция по установке плагина для скрытия внешних ссылок для CMS WordPress у меня в блоге:

https://itikhonov.art/wordpress-hide-external-links/