01О плагине
Cookie Consent Manager (CCM) — плагин для WordPress, который управляет согласием посетителей на использование cookie. Он показывает баннер, ведёт детальные настройки по категориям, блокирует аналитику до получения согласия и хранит выбор посетителя.
Плагин создан специально для законодательства Республики Беларусь (НЦЗПД, Совмин РБ) и Российской Федерации (152-ФЗ, Роскомнадзор) — с учётом требований к гранулярному согласию и прозрачности.
- Баннер согласия — не блокирует контент, адаптивен, три действия: «Принять все», «Отклонить все», «Настроить».
- Модальное окно настроек — четыре категории с переключателями и списком конкретных cookie.
- Блокировка скриптов — счётчики и реклама не загружаются до согласия.
- Реестр cookie — таблица с названиями, целями и сроками хранения.
- Виджет повторного доступа — посетитель меняет решение в любой момент.
- Лёгкость — JS меньше 15 КБ, CSS меньше 5 КБ, без jQuery и внешних CDN.
02Установка
- Получите архив. Напишите в Telegram @Sminec пару слов о сайте — в ответ придёт ZIP с плагином и инструкцией.
- Загрузите плагин. В админке WordPress откройте Плагины → Добавить новый → Загрузить плагин, выберите ZIP-файл и нажмите «Установить».
- Активируйте. После установки нажмите «Активировать плагин».
- Откройте настройки. В меню слева появится раздел «Cookie Consent» — плагин уже работает, баннер появится у новых посетителей.
03Быстрая настройка
Раздел «Cookie Consent» → «Общие настройки». Здесь задаётся всё, что видит посетитель:
| Параметр | Что делает |
|---|---|
| Включение плагина | Глобальный выключатель — баннер и блокировка скриптов отключаются полностью. |
| Позиция баннера | Внизу или вверху экрана. |
| Тема оформления | Светлая, тёмная или автоматическая — по настройкам системы посетителя. |
| Акцентный цвет | Цвет кнопок и активных элементов. По умолчанию #2563EB. |
| Ссылки на политики | Страница политики cookie и политика конфиденциальности — используются в баннере и настройках. |
| Тексты баннера | Заголовок, описание и надписи на кнопках. Мультиязычные: ru / by / en. |
04Категории cookie
Гранулярность — ключевое требование регуляторов: посетитель сам решает, какие категории разрешить. В плагине их четыре:
| Категория | Назначение | Можно отключить | Примеры |
|---|---|---|---|
| necessary Необходимые | Базовая работа сайта: сессия, язык, CSRF-защита | Нет — всегда включены | PHPSESSID, CSRF-токен, язык |
| functional Функциональные | Запоминают предпочтения посетителя | Да | Тема, версия для слабовидящих |
| statistics Статистические | Аналитика посещаемости без передачи третьим лицам | Да | Яндекс.Метрика, GA4 |
| marketing Маркетинговые | Персонализация рекламы | Да | Facebook Pixel, рекламные ID |
05Реестр cookie
Законы требуют открыто рассказывать, какие cookie использует сайт. Вкладка «Cookie» — это реестр, который виден посетителям в окне настроек и закрывает требование прозрачности.
Поля записи
| Поле | Описание |
|---|---|
| Название | Техническое имя cookie, например _ga |
| Описание | Человеческое описание — зачем нужна |
| Категория | Одна из четырёх: necessary / functional / statistics / marketing |
| Срок хранения | В секундах, минутах, часах или днях |
| Тип | Сессионная или постоянная |
| Домен | На каком домене устанавливается |
| Третьи лица | Да / нет, и какой сервис получает данные |
Как добавить cookie
- Откройте вкладку «Cookie» и нажмите «Добавить».
- Заполните поля: название, описание, категория, срок хранения.
- Сохраните — запись появится в окне настроек у посетителей.
Шаблоны ускоряют заполнение: WordPress (сессия, язык, auth), WooCommerce (корзина, недавно просмотренные), Яндекс.Метрика, Google Analytics 4, Matomo, Facebook Pixel. Поддерживаются импорт из CSV и массовые операции.
06Блокировка скриптов
Главный принцип: до согласия аналитика и реклама не загружаются вообще — сайт работает как обычно, просто без невидимых счётчиков. После выбора категорий скрипты подхватываются динамически, без перезагрузки страницы.
Способ 1 — готовые шаблоны
Яндекс.Метрика и Google Analytics распознаются автоматически по домену. Выберите шаблон в админке — счётчик привяжется к категории «statistics».
Способ 2 — data-атрибут в теме
Замените у скрипта тип на text/plain и добавьте атрибут категории:
<!-- счётчик не выполнится, пока нет согласия -->
<script type="text/plain"
data-cookiecategory="statistics"
src="https://mc.yandex.ru/metrika/tag.js"></script>
Плагин найдёт такие скрипты, проверит согласие и, если категория разрешена, вернёт text/javascript — счётчик запустится на текущем визите.
Способ 3 — вкладка «Скрипты»
Для кода, который нельзя править в теме: вставьте скрипт в админке и укажите название, категорию, размещение (head / body / footer) и приоритет загрузки. Плагин сам обернёт его и активирует после согласия.
Что происходит при разных действиях
| Действие посетителя | Результат |
|---|---|
| Первый визит | Баннер показан, счётчики не загружены |
| «Принять все» | Все скрипты загружаются динамически |
| «Отклонить все» | Работают только необходимые скрипты |
| «Настроить» → сохранить | Загружаются только выбранные категории |
| Возврат на сайт | Разрешённые скрипты грузятся сразу, баннер не показывается |
07Хранение согласия
- Основное хранилище —
localStorage, ключccm_consent. Внутри JSON: выбранные категории, timestamp и версия согласия. - Резерв — cookie
ccm_consentсроком 12 месяцев, если localStorage недоступен. - Версионирование — при изменении списка cookie или политики увеличьте версию согласия: баннер автоматически покажется всем посетителям заново.
Виджет повторного доступа — маленькая иконка в углу экрана (по умолчанию справа внизу). Клик открывает окно настроек: посетитель меняет категории в любой момент. Иконку можно переместить или скрыть в админке.
08Для разработчиков
JS-событие
Реагируйте на изменение согласия в своём коде:
document.addEventListener('ccm:consent-updated', function (e) {
console.log(e.detail.categories);
// ['necessary', 'functional']
});
PHP-хуки
// Проверка: разрешена ли категория
$allowed = apply_filters('ccm_is_category_allowed', $allowed, $category);
// Добавить cookie в реестр программно
apply_filters('ccm_register_cookie', $cookies);
// Действие после обновления согласия
add_action('ccm_after_consent_updated', function ($categories, $version) {
// своя логика, например очистка кэша
}, 10, 2);
Безопасность
- Все входные данные проходят sanitize / escape.
- AJAX-запросы защищены nonce-проверкой.
- Запросы к базе — только через
$wpdb->prepare. - Ни одного запроса к сторонним сервисам без согласия; стили CSP-friendly.
09Интеграции
Плагин распознаёт популярные сервисы и корректно распределяет их cookie по категориям:
| Плагин / сервис | Что делает CCM |
|---|---|
| WooCommerce | Автоматически распознаёт cookie корзины и «недавно просмотренных» |
| Fluent Forms | Разделяет cookie форм: CSRF-токены — «necessary», abandonment-трекинг — «statistics» |
| Rank Math | Добавляет страницу политики в структуру сайта и Schema |
| Yoast SEO | Добавляет политику в хлебные крошки |
| Polylang / WPML | Мультиязычные тексты баннера: ru / by / en |
| Contact Form 7 | Блокирует cookie форм до получения согласия |
| Яндекс.Метрика / GA4 | Готовые шаблоны, блокировка счётчика до согласия на «statistics» |
Fluent Forms — подробности
fluentform_abandonment→ категория statistics — отслеживание брошенных форм только при согласии.- CSRF-токены и сессия формы → necessary — базовая отправка форм работает всегда.
10Соответствие законам
Беларусь: Закон «Об информации, информатизации и защите информации», постановление Совмина РБ о защите персональных данных, требования НЦЗПД (cpd.by) — категоризация cookie, гранулярное согласие, прозрачность.
Россия: 152-ФЗ «О персональных данных», приказ Роскомнадзора № 512 от 18.09.2013, постановление Правительства РФ № 1119, рекомендации РКН по cookie-файлам.
Чек-лист перед запуском — встроен в админку
- Указаны все cookie и сроки их хранения.
- Есть ссылка на политику в отношении cookie.
- Работает кнопка «Отклонить все».
- Необходимые cookie нельзя отключить.
- Предусмотрено повторное согласие при изменениях.
11Решение проблем
| Ситуация | Что делать |
|---|---|
| Баннер не появляется | Проверьте, что плагин включён в общих настройках. Откройте сайт в режиме инкогнито — у вас уже могло сохраниться согласие. Сбросьте кэш страницы и CDN. |
| Метрика не работает после «Принять все» | Убедитесь, что шаблон счётчика добавлен и привязан к категории «statistics», а ID счётчика указан верно. |
| Изменили список cookie — баннер не показывается заново | Увеличьте версию согласия в настройках: все посетители увидят баннер повторно. |
| Скрипт в теме не блокируется | Замените type="text/javascript" на text/plain и добавьте data-cookiecategory с нужной категорией. |
| Кэширующий плагин кэширует старую версию согласия | CCM совместим с WP Rocket и W3 Total Cache — JS читает согласие на клиенте. Достаточно очистить кэш после изменения настроек. |