Как устанавливать счетчики аналитики в Вордпресс мы уже описывали в статье пару лет назад – прочесть можно тут: Правильная установка кодов счетчиков для Google Analytics и Метрики. Но та статья описывала процесс для движка WordPress до версии 5.
С приходом новой шестой версии многое изменилось как в настройках тем для CMS, настройках стилей и файлов, куда устанавливаются коды счетчиков.
Вы можете использовать для этой цели плагин, который вставит код за вас на нужные страницы, а можете сделать это вручную.
Плагин Header, Footer Injection имеест смысл использовать в тех случаях, если помимо счетчиков вы используете другие скрипты. Но не на всех страницах, а только там где требуется их функционал. Например, для отображения карт или специальных форм. Зачем грузить скрипт и увеличивать время загрузки при каждом открытии страницы? Плагин позволит гибко настроить загрузку только на нужные страницы сайта.
Если же у вас нет других хитрых скриптов и нужно просто поставить код счетчика на все страницы сайта, то это можно сделать вручную.
Сразу стоит сказать, что перед установкой счетчиков лучше создать “дочернюю” тему для вашей основной и уже в ней делать установку.
Главная причина для чего нужна “дочерняя” тема, это чтобы весь ваш рукописный код, а также настройки CSS стилей не исчезли после обновления основной используемой темы. При загрузке обновления, многие вещи могут затереться. Так что ставьте дочернюю тему к основной – это не сложно. Инструкцию можно найти на этой странице Что такое дочерняя тема и почему настройки нужно делать в ней.
Процесс установки кода Google Analytics и Метрики через functions.pho
Если в предудущей версии WordPress код можно было установить прямо в файл header.php в настройках темы, то сейчас этого файла просто нет. В разделе редактирования файлов темы нам предлагают только style.css (кстати, по умолчанию и его нет), файлы functions.php и theme.json.

Именно в файле functions.php
мы и будем вписывать наш код счетчиков. Причем мы сделаем это сразу и для кода, который устанавливается между тегами <head></head> и между <body>…</body>.
<?php
function add_style() {
wp_enqueue_style( 'style', get_stylesheet_uri() );
}
add_action( 'wp_enqueue_scripts', 'add_style' );
function hook_links() {
?>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXX');</script>
<!-- End Google Tag Manager -->
<?php }
add_action('wp_head', 'hook_links');
function hook_body() {
?>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(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(92000000, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/92XXXXX" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<?php }
add_action('wp_body_open', 'hook_body');
?>
Первые строчки с функцией add_style() предназначены для того, чтобы Вордпресс использовал в работе наш файл стилей style.css.
А вот далее идет функция hook_links. Мы ее объявляем и тут же закрываем код скрипта php закрывающейся скобкой с вопросо ?>
Мы это делаем для того, чтобы просто вставить код от Google или Метрики и не маскировать его внутри кода php. Далее снова открываем код <?php и объявляем команду add_action где и вставляем содержимое функции с кодом Google.
<?php } add_action('wp_head', 'hook_links');
Следующая функция идентичная, только она отвечает за простановку кода внутри тегов body. Назовем ее hook_body
Объявляем ее и закрываем код php ?>. Далее вставляем все, что нужно из кодов Гугла и Яндекса, Потом снова открываем код <?php и выводим весь код через add_action.
add_action('wp_body_open', 'hook_body');