Вы хотите вставить в код сайта на WordPress сторонний код счетчика или скрипта и все инструкции в интернете советуют зайти в файл header.php вашей темы и вставить код в него. Но что делать если у вас нет этого файла?
Есть три варианта решения этой проблемы:
- Поменять тему сайта, на ту, где есть файл header.php
- Установить специальный плагин, который вставит код
- Сделать это вручную через файл functions.php
Найти тему для сайте где есть файл header.php
Почему вы не смогли этот файл в текущей теме? Просто с 2021 года движок системы WordPress полностью перешел на блочную верстку и избавился от отдельных частей шаблонов. Это касается только новых тем. При этом, сохраняя приемственность версий, движок поддерживает старые версии тем, где эти файлы еще есть. Поэтому один из вариантов — найти такую тему. Но если вы планируете развиваться в WordPress, то стоит использовать новые решения. Тогда вам подойдет третий пункт решения, который описан ниже.
Но почему в интернете все еще советуют вставлять через header.php ?
До 2021 года других вариантов не существовало. И все статьи на уважаемых сайтах написаны до ввода блочной верстки, либо это статьи от разработчиков шаблонов, которые используют «старую» классическую верстку.
Просто СЕО-шники, работающие над оптимизацией сайта постоянне меняют дату публикации постов, чтобы подыматься выше в выдаче. Поэтому вам поиск выдает старые данные как будто недавно опубликованные.
Установить специальный плагин
Я долгое время использовал очень простой, но надежный как швейцарский ножик плагин для Вордпресс — Header, Footer injection.
В нем можно отдельно прописывать код для блока head и body, а также для footer и отдельно для постов и страниц.
Через редактирование файла functions.php
Разработчики Вордпресс избавились от отдельных файлов частей шаблона, но функциональный файл functions.php по-прежнему используется для каждой темы.
В нем то и нужно прописать ваши скрипты с помощью «хуков». Специальных функций движка, которые вставляют код в шапку или в тело сайта. Заодно потренируетесь в синтаксисе php. Есть несколько правил:
- Код php должен начинаться с <?php далее идет сами команды и функции и закрываться ?>
- Каждая строка кода заканчивается точкой с запятой.
- Перед различными манипуляциями с файлом functions.php рекомендуется создать его резервную копию у себя на компьютере.
Открываем файл для редактирования и пишем следующий код:
<?php
function hook_links() {
?>
далее вставляем код счетчика или скрипта как обычный html код. Например, код 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 -->
<!-- Yandex.RTB -->
<script>window.yaContextCb=window.yaContextCb||[]</script>
<script src="https://yandex.ru/ads/system/context.js" async></script>
Теперь ниже снова открываем тэг для кода php <?php и вписываем туда всего одну строчку. А потом закрываем ?>
<?php }
add_action('wp_head', 'hook_links', 1);
?>
То есть мы сперва в функцию hook_links накидали все наши коды вызова скриптов. А потом командой add_action закинули это в блок wp_head сайта. То, что нам было нужно.
Итоговый код выглядит так.
<?php
function hook_links() {
?>
<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 -->
<!-- Yandex.RTB -->
<script>window.yaContextCb=window.yaContextCb||[]</script>
<script src="https://yandex.ru/ads/system/context.js" async></script>
<?php }
add_action('wp_head', 'hook_links', 1);
?>
Сохраняйте functions.php с новым кодом и заходите проверять, подргузились ли скрипты на сайте.
А как через functions.php добавить код внутри тега body?
Точно также, только используйте другой параметр для add_action
<?php
add_action( 'wp_body_open', function () {
?>
<!-- Ваш код 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>
<!-- Конец кода Google Tag Manager (noscript) -->
<?php } ); ?>
Также сохраняем код и проверяем результат. В дальнейшем вы можете вставлять новые необходимые скрипты между кусками php кода.
Вы можете использовать любой из этих способов. Но учтите, что лишние темы на сайте или лишние плагины — это нагрузка на движок и базу данных сайта. Скорость загрузки становится меньше. Также, это риск взлома, если у авторов темы или плагина обнаружатся уязвимиости.
Читать: Почему сайт могут взломать, если на нем есть лишние плагины.
Нужна помощь с настройкой WordPress?
Вы много прочитали про Вордпресс, но по-прежнему сталкиваетесь с трудностями в настройке и нужна помощь специалиста. Напишите мне, я смогу вам помочь.