Когда сайт маленький, свои же заходы заметно портят статистику. Проверил, как выглядит новый пост, поправил опечатку, открыл ещё раз — и в Метрике плюс три визита, «глубокий просмотр» и «время на сайте» как у самого преданного читателя. Хочется видеть только настоящих посетителей.
В 2020 году я описал два способа: фильтр по IP в настройках Метрики и отключение счётчика для админа в теме WordPress. Оба живы, но у обоих есть дыры, которые я с тех пор нашёл. Ниже — три способа, от самого простого, и чем каждый плох.
current_user_can( 'edit_posts' ) вокруг кода счётчика. Заходите на сайт с разных устройств без входа в админку — помогут две строчки на JavaScript с флагом в браузере.Способ 1: фильтр в настройках Метрики
В счётчике откройте «Настройки» → вкладку «Фильтры». Там есть галочка «Не учитывать мои визиты» и фильтры по IP-адресу.
Важно понимать, как работает галочка. Я заглянул в настройки своих счётчиков через API Метрики: этот фильтр называется uniq_id с типом me. То есть Метрика узнаёт не вас, а ваш браузер — по идентификатору в его cookie. Отсюда минусы:
- в другом браузере, на телефоне, в режиме инкогнито вы снова обычный посетитель;
- почистили cookie — Метрика вас забыла.
Фильтр по IP годится, если у вас постоянный адрес. У домашнего интернета он часто меняется, у мобильного — постоянно, и фильтр тихо перестаёт работать. На lexium.ru фильтра по IP сейчас нет.
И общее для всех фильтров Метрики: они действуют только с момента включения. Старую статистику они не почистят, а отфильтрованные визиты не сохраняются вовсе — включив фильтр, вы их потом не увидите, даже если захотите.
Способ 2: не выводить счётчик для админа WordPress
Если вы не видите код счётчика, то и Метрика вас не видит. В теме сайта, обычно в footer.php, оберните код счётчика условием:
<?php if ( ! current_user_can( 'edit_posts' ) ) : ?>
<!-- Yandex.Metrika counter -->
…код счётчика…
<!-- /Yandex.Metrika counter -->
<?php endif; ?>
edit_posts — право редактировать записи. Оно есть у администратора, редактора, автора и участника, а у обычного подписчика и гостя — нет. Так и сделано у меня на lexium.ru.
В первой версии поста было current_user_can('administrator') || current_user_can('editor'). Работает, но проверять роли через current_user_can WordPress не советует: функция задумана для прав, а не ролей, и у сайтов с нестандартными ролями такая проверка ведёт себя неожиданно. Право надёжнее.
footer.php чужой темы затираются при её обновлении. Для чужой темы делайте дочернюю или выводите счётчик своим маленьким плагином через хук wp_footer — с тем же условием.Минус способа остаётся: пока вы не вошли в админку, вы обычный посетитель.
Способ 3: флаг в браузере
Этот способ закрывает дыру второго: счётчик не грузится в браузере, где вы один раз открыли «волшебную» ссылку, — даже без входа в админку. Подходит для любого сайта, не только WordPress, и для любых счётчиков.
В код счётчика добавляются две строчки: первая ставит флаг, вторая проверяет его перед запуском Метрики. Номер счётчика 12345678 замените на свой:
<script>
if (location.search.indexOf('no-metrika') !== -1) localStorage.setItem('no-metrika', '1');
if (!localStorage.getItem('no-metrika')) {
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(12345678, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true });
}
</script>
Теперь откройте в каждом своём браузере, на компьютере и телефоне, адрес вида https://ваш-сайт.ру/?no-metrika. Браузер запомнит флаг в localStorage, и счётчик в нём больше не запустится. Вернуть учёт — очистить данные сайта в браузере или выполнить в консоли localStorage.removeItem('no-metrika').
Минусы тоже есть: флаг живёт в браузере, как и cookie, и пропадает вместе с данными сайта. А если ссылку узнает кто-то ещё, он тоже выключит себе счётчик — но вреда от этого нет, просто на одного посетителя меньше в статистике.
Что выбрать
На lexium.ru работают первый и второй способы вместе: галочка «Не учитывать мои визиты» в Метрике и условие в теме. Третий стоит добавить, если часто смотрите сайт с телефона или чужого компьютера без входа. Фильтр по IP — только для офиса с постоянным адресом.
Ещё про Метрику и скорость сайта: «Yandex Metrika: Сторонний код заблокировал основной поток».
Спасибо за комментарий)
Замечательный сайтик, много полезной информации спасибо!