SadalClik на WordPress
Два робочі шляхи: через плагін, що ставить контейнер Google Tag Manager, або через functions.php дочірньої теми. Ядро й файли теми патчити не треба. Нижче — куди класти теку /cg/ і що на WordPress ламає лічильник найчастіше.
Підходить для WooCommerce · оновлення WordPress встановлення не зносить
Крок, який не можна пропустити
Тека /cg/ кладеться в корінь сайту
Спершу FTP, потім тег. У теці лежать два файли: лічильник cg-tracker.safe.js і приймач collect.php. Приймач — це PHP, і він має виконуватись на вашому домені, щоб візити не різали блокувальники. Google Tag Manager PHP-файл створити не може: тег уміє лише вставити JavaScript у сторінку.
Кладіть поруч із wp-config.php — там само, де корінь WordPress:
public_html/
├── wp-admin/
├── wp-content/
├── wp-includes/
├── wp-config.php
└── cg/
├── cg-tracker.safe.js
└── collect.php
| Шлях | Вердикт | Чому |
|---|---|---|
/cg/ |
Вірно | Корінь сайту. Оновлення WordPress, теми й плагінів сюди не лізуть. |
/wp-content/themes/tema/cg/ |
Ні | Злетить при першому ж оновленні теми. І адреса зміниться, якщо тему поміняєте. |
/wp-content/plugins/cg/ |
Ні | Те саме плюс ризик, що оптимізатор порахує теку сміттям. |
/wp-content/uploads/cg/ |
Ні | Багато хостингів забороняють виконувати PHP в uploads — collect.php мовчки поверне 403. |
Перевірка: відкрийте в браузері https://vash-sajt.com/cg/cg-tracker.safe.js. Має віддатися текст скрипта. Якщо бачите сторінку «404 — не знайдено» від WordPress, файл лежить не там або права не 644.
Права: тека 755, файли 644. Постійні посилання WordPress реальні файли не перехоплюють — правило .htaccess перевіряє наявність файла й пропускає його напряму.
Шлях A · радимо
Через плагін, що ставить контейнер GTM
Site Kit by Google і GTM4WP роблять одне: вставляють у сторінки контейнер Google Tag Manager. Самого коду SadalClik вони не знають — його ви додасте всередині GTM. Зате потім будь-які правки робляться в інтерфейсі GTM, без доступу до сайту.
Поставте контейнер
Site Kit: Налаштування → під’єднати Tag Manager, обрати контейнер GTM-XXXXXXX. GTM4WP: Settings → Google Tag Manager → вписати ID і увімкнути вставку коду.
Переконайтесь, що він один
Ctrl+U на головній, пошук по googletagmanager.com/gtm.js. Має знайтися одне входження. Два контейнери на сторінці — кожен візит піде до нас двічі й ліміт тарифу згорить удвічі швидше.
Додайте тег SadalClik
У GTM: Теги → Створити → Custom HTML, вставити код із панелі, тригер All Pages, позначку «один раз на сторінку» лишити увімкненою.
Preview, потім Submit
У режимі попереднього перегляду GTM відкрийте свій сайт: тег має бути в списку Fired. Лише після цього публікуйте контейнер.
Site Kit і GTM4WP разом вмикати не треба. Якщо контейнер уже вставляє один плагін, у другому вставку коду вимкніть.
Шлях B · без GTM
functions.php дочірньої теми
Якщо Tag Manager на сайті не потрібен, скрипт під’єднується штатним способом WordPress. Правило одне: файл редагується лише в дочірній темі. У батьківській темі правка живе до першого оновлення, потім зникає разом із даними.
Варіант через wp_enqueue_script — налаштування їдуть у той самий тег, порядок гарантований:
add_action('wp_enqueue_scripts', function () {
wp_enqueue_script(
'cg-tracker',
home_url('/cg/cg-tracker.safe.js'),
[], null, true
);
wp_add_inline_script('cg-tracker',
"window.CG_ACC='vash-akaunt';" .
"window.CG_CG_ENDPOINT='" . home_url('/cg/collect.php') . "';",
'before'
);
});
Якщо enqueue не потрібен, той самий код можна вивести в підвал напряму:
add_action('wp_footer', function () { ?>
<script data-cfasync="false" data-no-optimize="1">
window.CG_ACC = 'vash-akaunt';
window.CG_CG_ENDPOINT = '<?= home_url('/cg/collect.php') ?>';
</script>
<script src="<?= home_url('/cg/cg-tracker.safe.js') ?>" async></script>
<?php }, 99);
- Останній аргумент true ставить скрипт у підвал — сторінка його не чекає.
- Версія null прибирає ?ver= з адреси: файл і так віддається з вашого домену.
- home_url() сам підставить потрібний протокол і домен — на стейджингу нічого правити не доведеться.
- У header.php і footer.php теми код не вставляйте: ці файли перезаписуються оновленням.
Плагіна SadalClik у каталозі WordPress поки немає. Обидва шляхи вище — штатні засоби самого WordPress, нічого зайвого в базу не пишеться.
Підводні камені
Що на WordPress ламає лічильник
Сам код простий. Ламають його не ми і не WordPress, а шар оптимізації поверх нього: кеш, мінімізація, склеювання файлів і відкладений запуск JavaScript. Симптом завжди один — візитів стало помітно менше або вони зникли з частини пристроїв.
| Що стоїть | Що робить | Що зробити |
|---|---|---|
| WP Rocket | Minify/Combine JavaScript склеює файли й рве порядок; Delay JavaScript execution відкладає запуск до дотику до екрана. | Додайте cg-tracker.safe.js у Excluded JavaScript Files і у винятки відкладеного запуску. |
| LiteSpeed Cache | JS Combine і Load JS Deferred міняють момент виконання; Localize Resources копіює зовнішні файли до себе. | Впишіть /cg/ у JS Excludes і в Localization Excludes. |
| Autoptimize | Aggregate JS-files збирає все в один файл і часто виносить його вище налаштувань. | Поле Exclude scripts from Autoptimize: cg-tracker. |
| Cloudflare Rocket Loader | Переносить виконання всіх скриптів на потім і міняє їх порядок. Найчастіша причина «тег стоїть, візитів немає». | Атрибут data-cfasync="false" на тезі або вимкнений Rocket Loader для домену. |
| Плагіни «defer all JS» | Вішають defer на все підряд, включно з інлайн-налаштуваннями — лічильник стартує раніше, ніж дізнається акаунт. | Виняток за іменем файла або атрибут data-no-defer="1". |
Типова картина: після вмикання кешу цифра візитів впала втричі, а частка рекламних візитів підскочила. Це не детектор помилився — це частина сторінок віддається з кешу зі склеєним скриптом.
Кеш чиститься після кожної правки: спершу плагін, потім Cloudflare. Інакше ви перевіряєте вчорашню сторінку й робите висновки по ній.
Перевірка
П’ять хвилин, і зрозуміло — працює чи ні
Відкрийте сайт у режимі інкогніто
Адреса з міткою: https://vash-sajt.com/?gclid=test123. Так візит потрапить у рекламні й буде видно в журналі окремим рядком.
Дивіться вкладку Network
F12 → Network → фільтр collect. Має бути запит на /cg/collect.php зі статусом 200. Порожньо — скрипт не запустився, шукайте його в оптимізаторі. Статус 403 або 404 — тека лежить не там.
Перевірте вихідний код сторінки
Ctrl+U і пошук по cg-tracker. Для шляху A поруч має бути gtm.js, для шляху B — ваш власний тег у підвалі.
Загляньте в журнал панелі
Рядок візиту з’являється майже одразу. Оцінка й причини дописуються протягом десяти хвилин — детектор проходить по свіжих візитах з таким інтервалом.
Тестові візити з gclid рахуються рекламними і витрачають ліміт тарифу. На «Детекторі» це до 10 000 візитів на місяць — на перевірку вистачить із запасом, але ганяти сотні перезавантажень сенсу немає.
Питання по WordPress
Оновлення WordPress або теми знесе встановлення?
У мене немає FTP, лише адмінка WordPress.
Сайт на WooCommerce з великим каталогом — не сповільнить?
А як бути зі згодою на cookie?
У мене не WordPress, а Tilda чи інший конструктор.
Подивіться на свій трафік
Акаунт створюється безкоштовно, без картки — платна підписка сама не вмикається. Ми нічого не блокуємо, просто показуємо, хто до вас приходить.