Использование диспетчера тегов Google, чтобы предотвратить вход в систему пользователей Wordpress, загромождающих мою Google Analytics - PullRequest
0 голосов
/ 07 апреля 2019

Я использую Google Tag Manager на https://therichtimes.com и хочу, чтобы теги GA не срабатывали, если пользователь вошел в Wordpress в том же блоге.

Я сделал следующее:

1) Установленный ниже код в «голову» НАД кодом Google Tag Manager.

2) Проверено, что, когда я вошел в систему, это появляется в моем коде (когда закончите просмотр источника) - dataLayer.push ({'visitorLoginState': 'залогинен'})

3) Проверено, что если я не вошел в систему или не использую режим инкогнито, то в моем коде есть следующее - dataLayer.push ({'visitorLoginState':' logged-out '})

4) Настройте триггер GTM для типа события «просмотр страницы» для загрузки только на некоторых видах страниц, когда visitorLoginState содержит зарегистрированный вход.

5) Добавлен этот триггер как исключение для триггера запуска GA, т. Е. Теги GA запускаются на всех просмотрах страниц, КРОМЕ ТОГО, когда в систему входит visitorLoginState.

6) Проблема в том, что при предварительном просмотре через GTM и посещении моего блогадаже при входе в систему теги GA по-прежнему работают.Я обнаружил проблему, связанную с тем, что переменная уровня данных «не определена» при загрузке страницы.Я ожидал бы увидеть значение, которое вошло или вышло из системы;но ясно, что это не делается.Push-слой данных не работает?Мой код неверен или это настройка?

<!-- exclude WP logged in -->
<script>
<?php
if ( is_user_logged_in() ) {
echo "dataLayer.push({'visitorLoginState': 'logged-in'});";
} else {
echo "dataLayer.push({'visitorLoginState': 'logged-out'});";
}
?>
</script>

1 Ответ

0 голосов
/ 09 апреля 2019

Сообщение об ошибке в основном выдает его - вы пытаетесь добавить данные в массив, который еще не существует.Инициализируйте слой данных перед тем, как передать в него данные:

window.dataLayer = window.dataLayer || [];
<!-- exclude WP logged in -->
<script>
<?php
if ( is_user_logged_in() ) {
echo "dataLayer.push({'visitorLoginState': 'logged-in'});";
} else {
echo "dataLayer.push({'visitorLoginState': 'logged-out'});";
}
?>
</script>

В верхней строке написано: «если есть глобальная переменная уровня данных, используйте ее, иначе объявите новый массив с этим именем».

Вам также необходимо новое событие (т. Е. Пара ключ / значение, где ключом является «событие») с или после нажатия на слой данных, иначе GTM не будет обновлять свои переменные внутри.Однако, поскольку ваш сценарий находится над сценарием GTM, об этом позаботятся встроенные стандартные события (но помните об этом, если вы добавляете данные после загрузки страницы).

Обязательная Симо Ахава имеет более подробную информацию .

...