Главная → WordPress

Баннер согласия на cookie для сайта на WordPress

Как подключить баннер согласия на cookie на WordPress: через плагин вставки кода или в header.php дочерней темы, почему важен порядок относительно wp_head() и какие cookie на самом деле ставит сам WordPress.

Подключение к WordPress

После установки счётчики на сайте WordPress не запустятся, пока посетитель не нажмёт «Принять», а каждое его решение попадёт в журнал.

Если вы не редактируете файлы темы — поставьте любой плагин из категории вставки кода в head (в каталоге WordPress их несколько, подойдёт любой). Мы не участвуем в их разработке и ничего конкретного не рекомендуем.

В настройках плагина есть поле для кода, который выводится в head. Вставьте туда строку и, если плагин позволяет задать приоритет вывода, поставьте наименьшее значение — код должен идти раньше счётчиков.

Этот способ переживает обновление темы: код лежит в плагине, а не в её файлах.

header.php дочерней темы

<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<!-- LoveCookie -->
<script src="https://app.lovecookie.ru/embed-script/SITE_ID.js"></script>
<?php wp_head(); ?>
</head>

Строка обязана стоять выше wp_head(). Если поставить ниже, баннер появится, но Метрика успеет отработать до согласия — и проверка это покажет.

Позиция: внутри тега <head>, выше вызова wp_head(). wp_head() выводит всё, что подключают плагины, включая счётчики. Строка, стоящая после него, выполнится позже трекеров, и блокировать будет уже нечего.
Не добавляйте к тегу async или defer. С ними загрузчик может стартовать позже счётчиков, и блокировка не сработает.
  1. Откройте место для вставки кода

    Либо настройки плагина вставки кода в head, либо header.php дочерней темы: Внешний вид → Редактор файлов темы → header.php. Какой путь ваш — выбрано переключателем выше.

    Внешний видРедактор файлов темыheader.php

    Через FTP или репозиторий: /wp-content/themes/{дочерняя-тема}/header.php

  2. Вставьте строку выше wp_head()

    Строка должна выполниться раньше счётчиков. В теме это означает «выше вызова wp_head()», в плагине — наименьший приоритет вывода. Именно порядок, а не сам факт вставки, определяет, успеет ли счётчик отработать до согласия.

  3. Очистите кэш

    Сбросьте кэш в плагине кэширования, а также в панели хостинга и в CDN, если они используются. Иначе часть посетителей продолжит получать сохранённую страницу без загрузчика. Проверять установку имеет смысл только после сброса.

  4. Проверьте установку

    Мы откроем сайт и посмотрим, найден ли загрузчик, где он стоит и какие счётчики срабатывают до согласия.

Откройте header.php дочерней темы и вставьте строку внутрь head, выше вызова wp_head(). Правьте именно дочернюю тему: изменения в родительской пропадут при первом же её обновлении.

Если дочерней темы нет, а тема получает обновления — используйте вариант с плагином вставки кода. Так вы не потеряете строку при обновлении.

Альтернатива для разработчика — хук wp_head с приоритетом 0 в functions.php дочерней темы. Приоритет важен: с ним строка выводится раньше кода плагинов.

Правьте дочернюю тему. Строка, добавленная в родительскую, исчезнет при её обновлении.

На wordpress.com редактирование темы и установка плагинов доступны с тарифа Business.

При мультисайте строку нужно добавить для каждого сайта сети отдельно.

Не добавляйте к тегу async или defer: с ними загрузчик может стартовать позже счётчиков.

Какие cookie ставит сам WordPress

Мы открыли 17 клиентских сайтов на WordPress как обычный посетитель и не нашли ни одного cookie ядра WordPress. Все cookie ниже появляются только после входа в систему, отправки комментария или добавления товара в корзину — то есть после осознанного действия. Ни одно из них не требует баннера, и загрузчик их не трогает.

CookieЧто делаетКто ставитОснование
wordpress_logged_in_*сессия администратора или зарегистрированного пользователясервер, ядро WordPressобязательная
wp-settings-*настройки интерфейса админки для конкретного пользователясервер, ядро WordPressобязательная
comment_author_*подставляет имя и почту в форму комментария при повторном визитесервер, ядро WordPressобязательная
woocommerce_cart_hashсодержимое корзины WooCommerceсервер, WooCommerceобязательная
wp_woocommerce_session_*привязка корзины и оформления заказа к посетителюсервер, WooCommerceобязательная

Всё остальное, что оказалось на этих сайтах, ставили не WordPress, а плагины и внешние счётчики: аналитика, коллтрекинг, определение источника перехода. Вот именно ими и управляет загрузчик — их состав на вашем сайте покажет проверка выше.

Плагин-баннер и управление загрузкой — в чём разница

В каталоге WordPress есть решения обоих классов. Сравниваем классы, а не конкретные плагины; что делает установленный у вас — покажет проверка выше.

Что сравниваемПлагин-баннерУправление загрузкой и журнал согласий
Показывает уведомление о cookieДаДа
Задерживает выполнение счётчиков до согласияЗависит от решения, чаще нетДа
Сохраняет, на что именно согласился посетительОбычно только факт закрытияДа, по категориям
Где хранится журнал согласийВ базе того же сайтаВо внешнем сервисе, отдельно от сайта
Список трекеровОбновляется вместе с плагиномОбновляется на стороне сервиса, без обновления сайта
Влияние на скорость сайтаЕщё один плагин в загрузке PHPОдна строка, серверный код не выполняется

В таблице только проверяемые технические различия. Мы не оцениваем соответствие чужих решений закону и не называем конкретные плагины.

Частые вопросы

Что происходит, когда посетитель нажимает «Отклонить»?

Счётчики, которыми управляет загрузчик, не выполняются, а решение записывается в журнал. Cookie входа, комментариев и корзины продолжают работать: они появляются только после действия самого посетителя и согласия не требуют.

Пропадёт ли строка при обновлении темы?

Если вставить её в родительскую тему — пропадёт при первом же обновлении. Поэтому либо дочерняя тема, либо плагин вставки кода: в обоих случаях обновление темы строку не затрагивает.

У меня уже стоит плагин с баннером cookie?

Запустите проверку выше по адресу вашего сайта. Она покажет, срабатывают ли счётчики до согласия. Если срабатывают — баннер показывается, но загрузку не контролирует, и подтвердить состав согласия по нему нельзя.

Работает ли на мультисайте?

Да. Строку нужно добавить для каждого сайта сети, а в личном кабинете завести их отдельно — журнал согласий по каждому сайту ведётся свой.

Баннер появился, а Метрика всё равно срабатывает до согласия?

Строка стоит ниже wp_head() или ниже кода счётчика. Поднимите её выше и очистите кэш. Если код вставлен плагином — задайте плагину наименьший приоритет вывода. Проверка покажет, какие именно счётчики объявлены раньше загрузчика.

Замедлит ли это сайт?

На стороне WordPress не выполняется ничего: это обычный тег script, серверного кода и запросов к базе он не добавляет.

Сломается ли корзина WooCommerce?

Нет. Cookie корзины и сессии WooCommerce относятся к техническим, загрузчик их не блокирует и не удаляет.

Правовая оговорка. Сервис носит информационный характер и не является юридической консультацией. Состав требований зависит от того, какие данные обрабатывает конкретный сайт; в спорной ситуации проверьте решения с юристом.