← вернуться на главную

Документация

Всё об установке и работе Nymbl Cookie Sentinel: баннер и категории, реестр cookie, блокировка скриптов, интеграции по ID, кэш и мультисайт, PHP-хуки и JS-события. Плагин создан для законодательства Беларуси и России.

версия 1.0.1 WordPress 6.0+ PHP 7.4+ язык ru JS 5,6 КБ gzip

01О плагине

Nymbl Cookie Sentinel — плагин для WordPress, который управляет согласием посетителей на использование cookie: показывает баннер, ведёт настройки по категориям, блокирует аналитику и рекламу до получения согласия и хранит выбор посетителя.

Плагин создан для сайтов, работающих по законодательству Республики Беларусь (Закон № 99-З, НЦЗПД, cpd.by) и Российской Федерации (152-ФЗ, Роскомнадзор): гранулярное согласие, реестр cookie, прозрачность обработки.

  • Баннер согласия — не блокирует контент, адаптивен, три действия: «Принять все», «Отклонить все», «Настроить».
  • Модальное окно настроек — четыре категории с переключателями и списком конкретных cookie; список раскрывается кнопкой «Показать cookie (N)», чтобы окно оставалось компактным.
  • Блокировка до согласия — счётчики и реклама не загружаются; после выбора категорий скрипты активируются без перезагрузки страницы.
  • Вкладка «Интеграции» — 7 служб подключаются по идентификатору, без вставки кода: официальный сниппет плагин генерирует сам.
  • Реестр cookie — таблица с названиями, целями, сроками хранения, доменами и третьими лицами; шаблоны сервисов, импорт CSV, массовые операции.
  • Вкладка «Соответствие» — чек-лист из 7 проверок с подсказками, что именно исправить.
  • Виджет повторного доступа — иконка в углу экрана появляется после того, как посетитель сделал выбор, и открывает настройки в один клик.
  • Лёгкость — JS 18 КБ (5,6 КБ gzip), CSS 14 КБ (3,8 КБ gzip), без jQuery и внешних CDN.
Бесплатно и без ограничений. Плагин доступен в официальном каталоге WordPress — без Pro-версий, подписок и скрытых платежей.
Чего плагин не делает: не принимает и не хранит произвольный код, не ведёт серверных логов согласия, не отправляет данные разработчику и не содержит телеметрии. Все внешние запросы возможны только к счётчикам, которые вы включили сами, и только после согласия посетителя.

02Установка

  1. Скачайте плагин из официального репозитория WordPress.
  2. Установите. В админке откройте Плагины → Добавить новый, найдите «Nymbl Cookie Sentinel» — или загрузите ZIP-архив кнопкой «Загрузить плагин».
  3. Активируйте. После активации в меню появится раздел «Cookie Consent», а баннер сразу начнёт показываться новым посетителям.
  4. Настройте. Пройдите по вкладкам «Общие настройки» → «Cookie» → «Интеграции» → «Соответствие» (быстрый порядок — в следующем разделе).
Требования: WordPress 6.0+, PHP 7.4+. Плагин работает без jQuery и внешних CDN, корректно ведёт себя с кэширующими плагинами и поддерживает мультисайт.

03Быстрый старт

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

  1. Укажите ссылки на политики — «Общие настройки» → поля «Страница политики cookie» и «Страница политики конфиденциальности».
  2. Проверьте текст баннера. В описании можно использовать плейсхолдеры {policy} и {privacy} — ссылки встраиваются прямо в предложение.
  3. Заполните реестр cookie — вкладка «Cookie»: примените шаблоны сервисов и добавьте собственные записи.
  4. Подключите счётчики — вкладка «Интеграции»: выберите службу и введите только её идентификатор.
  5. Пройдите чек-лист — вкладка «Соответствие» покажет, что осталось заполнить.
Нужны тексты политик? Политику обработки персональных данных и политику cookie по законам Беларуси и России можно собрать в конструкторе на этом сайте — и вставить на свой сайт.

04Вкладка «Общие настройки»

Здесь задаётся всё, что видит посетитель:

ПараметрЧто делает
Включение плагинаГлобальный выключатель — баннер и блокировка скриптов отключаются полностью.
Позиция баннераВнизу или вверху экрана.
Тема оформленияСветлая, тёмная или автоматическая — по настройкам системы посетителя.
Акцентный цветЦвет кнопок, тумблеров, индикаторов и иконки виджета. По умолчанию #2563EB.
Ссылки на политикиСтраница политики cookie и страница политики конфиденциальности. В описании баннера используйте плейсхолдеры {policy} и {privacy}: ссылки встраиваются в предложение. Если URL не указан — плейсхолдер остаётся обычным текстом. Если плейсхолдеров нет, ссылки добавляются после текста.
Тексты баннераЗаголовок, описание и четыре надписи: «Принять все», «Отклонить все», «Настроить», «Сохранить настройки».
Виджет управленияИконка повторного открытия настроек: включение, выключение и положение — правый или левый нижний угол.
Версионирование согласияПоказывает текущую версию и кнопку «Показать баннер заново всем» — она нужна, если требуется запросить согласие немедленно.
Акцентный цвет применяется ко всему интерфейсу плагина: кнопкам, активным тумблерам, индикаторам категорий, иконке виджета и hover-ссылкам. Тексты баннера и URL страниц переводятся через Polylang и WPML.

05Категории cookie

Гранулярность — ключевое требование регуляторов: посетитель сам решает, какие категории разрешить. В плагине их четыре:

КатегорияНазначениеМожно отключитьПримеры
necessary НеобходимыеБазовая работа сайта: сессия, язык, CSRF-защитаНет — всегда включеныPHPSESSID, CSRF-токен, язык
functional ФункциональныеЗапоминают предпочтения посетителяДаТема, версия для слабовидящих
statistics СтатистическиеАналитика посещаемостиДаЯндекс.Метрика, GA4, Matomo
marketing МаркетинговыеПерсонализация рекламыДаFacebook Pixel, VK Pixel
«Отклонить все» оставляет только необходимые cookie — отключить эту кнопку нельзя, её наличие требует и НЦЗПД, и Роскомнадзор. Категория «Необходимые» помечена бейджем «Всегда включены», переключатель заблокирован. Для каждой категории в окне настроек выводится список конкретных cookie из реестра: название, цель, срок хранения, а для сторонних — имя сервиса.

06Реестр cookie

Законы требуют открыто рассказывать, какие cookie использует сайт. Вкладка «Cookie» — это реестр, который виден посетителям в окне настроек и закрывает требование прозрачности.

Поля записи

ПолеОписание
НазваниеТехническое имя cookie, например _ga. Сохраняется как введено: регистр, точки, слэши и * для wildcard-имён (wordpress_logged_in_*).
ОписаниеЧеловеческое описание — зачем нужна cookie.
КатегорияОдна из четырёх: necessary / functional / statistics / marketing.
Срок храненияЧисло и единица: секунды, минуты, часы, дни, месяцы, годы или «сессионная».
ДоменНа каком домене устанавливается cookie.
Третьи лицаФлаг «сторонняя» и название сервиса, который её устанавливает.
АктивнаВыключенная запись остаётся в базе, но не показывается посетителям.

Как заполнить реестр

  1. Откройте вкладку «Cookie» и в блоке «Шаблоны сервисов» выберите нужный шаблон — например, «Яндекс.Метрика» — и нажмите «Добавить шаблон».
  2. Добавьте собственные cookie кнопкой «Добавить cookie»: название, описание, категория, срок хранения.
  3. Сохраните — записи сразу появятся в окне настроек у посетителей. Массово включайте, выключайте и удаляйте записи через «Массовые действия», ищите — строкой поиска.

Шаблоны: WordPress, WooCommerce, Яндекс.Метрика, Google Analytics 4, Matomo, Facebook Pixel. При активации плагина шаблон WordPress добавляется автоматически, если таблица пуста. Шаблоны только добавляют записи и не перезаписывают ваши.

Импорт из CSV: разделитель ;, кодировка UTF-8, файл до 512 КБ и до 500 строк. Колонки: name;description;category;duration_value;duration_unit;domain;third_party;third_party_name. Строка заголовка распознаётся и пропускается.

07Блокировка скриптов

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

Способ 1 — вкладка «Интеграции»

Подключение счётчика без вставки кода: выберите службу, укажите её идентификатор (номер счётчика, Measurement ID, Container ID, Pixel ID или URL Matomo) и категорию. Плагин сам сгенерирует официальный код счётчика, выведет его заблокированным и активирует после согласия. Идентификатор проверяется строгим форматом, произвольный код не принимается и не хранится.

Способ 2 — data-атрибут в теме

Замените у скрипта тип на text/plain и добавьте атрибут категории:

<!-- счётчик не выполнится, пока нет согласия -->
<script type="text/plain"
      data-cookiecategory="statistics"
      src="https://mc.yandex.ru/metrika/tag.js"></script>

Плагин найдёт такие скрипты, проверит согласие и, если категория разрешена, вернёт text/javascript — счётчик запустится на текущем визите. Работает и для инлайн-скриптов, а не только для файлов с src.

Способ 3 — автоблокировка известных счётчиков

Если Яндекс.Метрика или Google Analytics подключены другой темой либо плагином через стандартную систему скриптов WordPress, плагин распознаёт их по именам обработчиков: yandex-metrika, ym, ga, google-analytics, gtag, google-gtag, analytics. Такие скрипты блокируются до согласия на категорию «statistics». Список расширяется фильтром nymcs_blocked_script_handles.

Что происходит при разных действиях

Действие посетителяРезультат
Первый визитБаннер показан, счётчики не загружены
«Принять все»Все скрипты загружаются динамически
«Отклонить все»Работают только необходимые скрипты
«Настроить» → сохранитьЗагружаются только выбранные категории
Возврат на сайтРазрешённые скрипты грузятся сразу, баннер не показывается

09Вкладка «Интеграции»

Счётчики подключаются формой: служба → идентификатор → категория → размещение → приоритет. Код не вставляется вручную: плагин генерирует официальный сниппет службы при выводе страницы, не сохраняя его в базе, и печатает тег заблокированным (type="text/plain") до согласия на соответствующую категорию.

СлужбаЧто вводитсяКатегория по умолчанию
Яндекс.МетрикаНомер счётчика (1–99 999 999), опция «Вебвизор»statistics
Google Analytics 4Measurement ID: G-XXXXXXXX (также GT-, AW-, DC-, UA-)statistics
Google Tag ManagerContainer ID: GTM-XXXXXXXXstatistics
VK PixelPixel ID: VK-RTRG-…marketing
Top.Mail.ruID счётчика: TM-… или числовойstatistics
Facebook PixelPixel ID — числовой идентификаторmarketing
MatomoURL трекера (https://) и Site IDstatistics

Для каждой интеграции задаются место вывода (head, body, footer), приоритет загрузки и переключатель «Включена». Рядом с полями выводится правовая справка по службе: домены, к которым обращается счётчик, какие данные он получает и ссылки на условия использования и политику конфиденциальности сервиса.

Произвольный код не принимается — это требование правил каталога WordPress и осознанное ограничение безопасности. Интеграции из списка официально поддерживаются: Яндекс.Метрика, Google Analytics 4, Google Tag Manager, VK Pixel, Top.Mail.ru, Facebook Pixel и Matomo. Любые другие скрипты подключайте в теме через type="text/plain" + data-cookiecategory — плагин их активирует после согласия.

10Кэш, мультисайт и удаление

  • Разметка выводится скрытой, показом управляет JavaScript, поэтому кэширование страниц не ломает логику согласия.
  • Автоочистка кэша. При сохранении настроек, изменении реестра cookie, интеграций и версии согласия плагин очищает кэш: LiteSpeed Cache, WP Rocket, W3 Total Cache, WP Super Cache, WP Fastest Cache, Autoptimize, Hummingbird, Breeze, SiteGround Optimizer, Cache Enabler.
  • Своя очистка. Для Varnish, nginx, Cloudflare и других слоёв подпишитесь на действие nymcs_clear_cache — оно срабатывает перед каждым сбросом кэша.
  • Мультисайт. Активация в сети настраивает все сайты, а новые сайты подхватываются автоматически. Настройки и реестр cookie у каждого сайта свои.
  • Удаление. При удалении плагина через админку WordPress удаляются настройки, версия согласия, кэш реестра и таблица cookie текущего сайта. В мультисайте проверьте таблицы остальных сайтов сети.

11Для разработчиков

Фильтры и действия

// Проверка: разрешена ли категория (PHP)
$allowed = apply_filters('nymcs_is_category_allowed', $allowed, $category);

// Добавить cookie в реестр программно
add_filter('nymcs_register_cookie', function ($cookies) {
    $cookies[] = ['name' => 'my_cookie', 'category' => 'functional'];
    return $cookies;
});

// Расширить список автоблокируемых обработчиков
add_filter('nymcs_blocked_script_handles', function ($handles) {
    $handles[] = 'my-analytics';
    return $handles;
});

// После обновления согласия (каждый запрос с согласием)
add_action('nymcs_after_consent_updated', function ($categories, $version) {
    // своя логика; при необходимости дедуплицируйте сами
}, 10, 2);

// Своя очистка кэша (CDN, Varnish, nginx)
add_action('nymcs_clear_cache', function () {
    // очистка на стороне хостинга
});

Хелперы и данные

  • nymcs_is_category_allowed( 'statistics' ) — серверная проверка согласия на категорию.
  • Фильтр nymcs_categories_meta — метаданные категорий, передаваемые в JS-конфиг.
  • window.NYMCS_CONFIG — конфигурация баннера: версия, позиция, тема, метки, категории, срок хранения согласия.
  • Атрибуты разметки: data-cookiecategory, data-nymcs-action, data-nymcs-script, data-nymcs-blocked-handle.

Безопасность

  • Все входные данные проходят sanitize / escape, вывод экранируется.
  • AJAX-запросы защищены nonce-проверкой, действия в админке — проверкой прав и nonce.
  • Запросы к базе — только через $wpdb->prepare.
  • Произвольный код не принимается и не хранится; идентификаторы служб валидируются строгими форматами при сохранении и при чтении.
  • Ни одного запроса к сторонним сервисам без согласия; стили CSP-friendly.

12Соответствие законам

Беларусь: Закон от 7 мая 2021 г. № 99-З «О защите персональных данных», Указ Президента РБ от 28 октября 2021 г. № 422, требования НЦЗПД (cpd.by) — категоризация cookie, гранулярное согласие, прозрачность, отказ от «тёмных паттернов».

Россия: 152-ФЗ «О персональных данных», постановления Правительства РФ № 1119 (меры защиты) и № 687, приказ ФСТЭК России № 21, уведомление Роскомнадзора по ст. 22 152-ФЗ, приказ РКН № 179 (подтверждение уничтожения данных), ответственность по ст. 13.11 КоАП.

Чек-лист перед запуском — встроен в админку

  • Указаны все cookie сайта (не менее пяти записей в реестре).
  • Указаны сроки хранения каждой cookie.
  • Есть ссылка на политику в отношении cookie.
  • Работает кнопка «Отклонить все».
  • Необходимые cookie нельзя отключить.
  • Предусмотрено повторное согласие при изменении реестра.
  • Аналитика и реклама не загружаются до согласия.
Важно: плагин — инструмент для сбора и хранения согласия, он не заменяет юридическую проверку. Тексты политик в конструкторе — типовой шаблон: перед публикацией сверьте их с актуальными редакциями нормативных актов и особенностями вашего сайта.

13Решение проблем

СитуацияЧто делать
Баннер не появляетсяПроверьте, что плагин включён в «Общих настройках». Откройте сайт в режиме инкогнито — согласие уже могло сохраниться. Очистите кэш страницы и CDN: плагин чистит кэш своих подопечных сам, но серверный и CDN-кэш — за вами.
Не видно иконку настроек в углуВиджет появляется только после того, как посетитель сделал выбор. Проверьте также, что он включён в «Общих настройках» и не перекрыт элементами темы (z-index).
Метрика не работает после «Принять все»Убедитесь, что интеграция добавлена, включена, привязана к категории «statistics», а номер счётчика указан верно. Если счётчик подключён ещё и темой — отключите дублирующий код.
Изменил реестр — баннер не показывается зановоВерсия согласия увеличивается автоматически при сохранении реестра, поэтому проверьте кэш браузера и CDN. Запросить согласие немедленно можно кнопкой «Показать баннер заново всем» в «Общих настройках».
Скрипт в теме не блокируетсяЗамените type="text/javascript" на text/plain и добавьте data-cookiecategory с нужной категорией. Если скрипт подключён через wp_enqueue_script — добавьте его обработчик в фильтр nymcs_blocked_script_handles.
Хочу подключить сервис, которого нет в спискеПлагин сознательно не принимает произвольный код. Оберните скрипт сервиса в теме: type="text/plain" + data-cookiecategory — и он будет активирован после согласия вместе с остальными.
Кэш или CDN отдаёт старую версиюПлагин автоматически очищает кэш 10 популярных плагинов. Для Varnish, nginx и Cloudflare подключите свою очистку к действию nymcs_clear_cache.
Остались вопросы? Напишите разработчику — контакт для связи находится в подвале страницы.