Задать вопрос
@Kypidon4ik
Фрилансер, Wordpress developer

Как быстрее добавлять utm метки ко всем «a» тегам?

Написал скрипт который сохраняет utm метки между страницами (для отслеживание статистики кто откуда пришел)
// Функция для получения UTM-параметров из URL
function getUTMParams() {
    const urlParams = new URLSearchParams(window.location.search);
    return {
        utm_source: urlParams.get('utm_source'),
        utm_medium: urlParams.get('utm_medium'),
        utm_campaign: urlParams.get('utm_campaign')
    };
}

// Функция для добавления UTM-параметров к внутренним ссылкам
function addUTMToInternalLinks() {
    const utmParams = getUTMParams();
    const links = document.querySelectorAll('a');

    links.forEach(link => {
        const href = link.getAttribute('href');
        // Проверяем, является ли ссылка внутренней
        const isInternalLink = href && (href.startsWith('/') || href.includes(window.location.hostname));

        // Проверка, содержит ли ссылка UTM-параметры
        const hasUTMParams = /[?&]utm_/.test(href);

        // Если ссылка внутренняя и не содержит UTM-параметров, добавляем их
        if (isInternalLink && !hasUTMParams) {
            const newUrl = new URL(href, window.location.origin);
            if (utmParams.utm_source) newUrl.searchParams.set('utm_source', utmParams.utm_source);
            if (utmParams.utm_medium) newUrl.searchParams.set('utm_medium', utmParams.utm_medium);
            if (utmParams.utm_campaign) newUrl.searchParams.set('utm_campaign', utmParams.utm_campaign);
            
            link.setAttribute('href', newUrl.toString());
        }
    });
}

// Запуск функции после загрузки страницы
document.addEventListener("DOMContentLoaded", addUTMToInternalLinks);


Но есть один нюанс, на медленном интернет соединении эти utm не добавляется быстро (может пройти порядка 5 секунд) и как следствие можем потерять utm. Думал переписать это на php но не понимаю как быть с множеством кастомных полей (сделаны через carbonfields). Так бы я применил the_content хук-фильтр (при использовании только базового функционала wp)
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой 10 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы