Документация к плагину «Согласие 152-ФЗ» для WordPress. Разделы идут в том порядке, в котором их проходят: подготовка сайта, установка, лицензия, документы, группы согласий, формы, cookie-баннер, журнал и обращения субъектов. Раздел открыт без авторизации — его можно прочитать до покупки.
Начните с раздела «Константы в wp-config.php». Плагин не имеет запасных значений для четырёх секретов и без них не активируется — это единственный шаг, который нельзя пропустить.
Требования к сайту
- WordPress 6.5 или новее.
- PHP 8.1 или новее.
- MySQL 5.7 / MariaDB 10.4 или новее.
- Права администратора сайта и возможность отредактировать
wp-config.php. - Исходящие HTTPS-соединения к
shop.marmyshev.ru— они нужны только для активации и периодической проверки лицензии. Если на сервере стоит фаервол или прокси, разрешите этот хост.
Если версия PHP или WordPress ниже минимальной, плагин прерывает активацию, выключает себя и показывает сообщение с номерами версий — сайт при этом не страдает.
Константы в wp-config.php
Задайте эти константы до того, как нажмёте «Активировать». Плагин читает секреты только из wp-config.php и никаких значений по умолчанию не подставляет: без них активация завершается фатальной ошибкой и сайт отдаёт белый экран. Такое поведение выбрано намеренно — молчаливый запасной ключ означал бы, что персональные данные какое-то время лежали зашифрованными на предсказуемом секрете.
| Константа | Обязательна | За что отвечает |
|---|---|---|
SOGLASIE_152_ENCRYPTION_KEY | да | Шифрование персональных данных при хранении. |
SOGLASIE_152_SEARCH_KEY | да | HMAC для поиска по e-mail без расшифровки. Значение должно отличаться от предыдущего. |
SOGLASIE_152_WITHDRAWAL_SECRET | да | Подпись токенов отзыва согласия. |
SOGLASIE_152_FORM_SECRET | да | Подпись токенов формы и контекста гейта согласий. |
SOGLASIE_152_HMAC_KEY | нет | Ключ подписи доказательств гейта форм. Без неё используется соль WordPress auth — тогда подписи перестанут сходиться при смене солей, поэтому лучше задать явно. |
Как задать значения
Каждое значение — ровно 64 строчных шестнадцатеричных символа (32 байта), и все значения разные. Подойдёт любой источник криптостойкой случайности; в командной строке сервера это openssl rand -hex 32, выполненный отдельно для каждой константы.
Строки добавляются в wp-config.php выше комментария /* That's all, stop editing! */:
define( 'SOGLASIE_152_ENCRYPTION_KEY', '64 шестнадцатеричных символа' );
define( 'SOGLASIE_152_SEARCH_KEY', '64 шестнадцатеричных символа' );
define( 'SOGLASIE_152_WITHDRAWAL_SECRET', '64 шестнадцатеричных символа' );
define( 'SOGLASIE_152_FORM_SECRET', '64 шестнадцатеричных символа' );
define( 'SOGLASIE_152_HMAC_KEY', '64 шестнадцатеричных символа' );
Что нельзя менять после первой записи
SOGLASIE_152_ENCRYPTION_KEY и SOGLASIE_152_SEARCH_KEY не подлежат замене после того, как в базу попало первое согласие: ими зашифрованы персональные данные и посчитаны хеши поиска. Потеря или подмена делает сохранённые записи нечитаемыми, а журнал согласий — непригодным для предъявления. Сделайте копию wp-config.php сразу после того, как впишете константы, и храните её отдельно от сайта.
Установка и активация плагина
- Скачайте ZIP-архив плагина из письма о покупке или из личного кабинета на
shop.marmyshev.ru. - Убедитесь, что константы из предыдущего раздела уже в
wp-config.php. - Откройте Плагины → Добавить плагин → Загрузить плагин, выберите архив и нажмите «Установить».
- Нажмите «Активировать».
После активации в боковом меню появится пункт Согласие 152-ФЗ с разделами «Согласия», «Политики», «Редактор политики», «Группы согласий», «Настройки», «Точки размещения», «Состояние» и «Лицензия». Плагин создаёт собственные таблицы в базе — отдельных шагов миграции делать не нужно.
Активация лицензии
Ключ приходит на почту после оплаты и доступен в личном кабинете магазина. Формат ключа — S152-{ТАРИФ}-XXXX-XXXX-XXXX-XXXX, где ТАРИФ это FREE, PERS, BUSI или AGCY.
- Откройте Согласие 152-ФЗ → Лицензия.
- Вставьте ключ целиком, вместе с дефисами и без пробелов.
- Нажмите «Активировать лицензию».
После успешной активации на той же странице появится блок «Статус лицензии»: статус, тариф, домен, ключ, дата истечения, срок действия токена и время последней проверки. Ответ сервера подписан криптографически, и плагин проверяет подпись локально — неподписанному ответу он не поверит, даже если тот пришёл с правильного домена.
На сервер лицензий уходит только ключ, домен сайта, версия плагина и версии WordPress и PHP. Содержимое согласий, журнал и персональные данные субъектов туда не отправляются никогда.
Что работает без лицензии
Плагин работоспособен и без ключа — в режиме Free. В нём доступны запись и хранение согласий, журнал согласий, cookie-баннер с тремя категориями, публикация документов (одна действующая версия на документ) и контакт для запросов субъектов персональных данных.
Без активной лицензии выключены:
- экспорт журнала согласий в CSV;
- интеграции с формами — Contact Form 7, WPForms, WooCommerce, комментарии и регистрация WordPress;
- перенос ранее данного согласия для авторизованных пользователей (чтобы не спрашивать одно и то же дважды);
- повторный запрос согласия при публикации новой версии документа и рассылка приглашений;
- подключение к штатным инструментам WordPress Инструменты → Экспорт / Удаление персональных данных;
- категории cookie «Маркетинговые» и «Сторонние сервисы»;
- отдельное согласие на маркетинговую рассылку;
- история версий документа: в Free хранится одна версия на документ;
- служебный журнал аудита в Free хранит последние 500 записей, старые вытесняются новыми.
Перенос ключа на другой сайт
Лицензия привязана к домену, поэтому переезд состоит из двух шагов: на старом сайте нажмите «Деактивировать на этом сайте» — слот в реестре активаций освободится, — затем введите тот же ключ на новом. Если доступ к старому сайту уже потерян, напишите в поддержку: запись активации снимут вручную.
Продление и истечение срока
Подписка не продлевается автоматически — автосписание не подключается. За 30 и за 7 дней до окончания плагин показывает напоминание в админке. Продление оформляется в личном кабинете магазина и создаёт обычный заказ на тот же тариф с тем же ключом.
Плагин периодически сверяется с сервером сам; кнопка «Проверить сейчас» на странице «Лицензия» делает это немедленно — она пригодится сразу после оплаты продления. Если сайт временно потерял связь с магазином, последний действительный токен остаётся в силе ещё 14 дней, и только после этого тариф опускается до Free.
Возврат к Free ничего не удаляет. Собранные согласия, опубликованные документы и записи журнала остаются на месте; после повторной активации функции включаются в том же состоянии.
Если активация не прошла
Плагин показывает сообщение с кодом ошибки от сервера лицензий. Чаще всего встречаются четыре: ключ введён неполностью, превышено число активаций по тарифу (деактивируйте один из сайтов), слишком много попыток с одного адреса за час (подождите час), или сайту закрыт исходящий доступ к shop.marmyshev.ru. Если код не подходит ни под один из случаев, напишите в поддержку и приложите текст сообщения.
Документы, на которые ссылаются согласия
Согласие без документа ничего не доказывает, поэтому документы публикуются до того, как настраиваются чекбоксы. Раздел Согласие 152-ФЗ → Редактор политики создаёт и публикует версию, раздел Политики показывает список документов и историю их версий с датой вступления в силу и хешем тела.
Поддерживаемые виды документов: политика конфиденциальности, пользовательское соглашение, публичная оферта, лицензионное соглашение, политика cookie, согласие на маркетинговую рассылку и соглашение об обработке данных (DPA). У каждого свой слаг, по которому на него ссылаются чекбоксы.
Каждая опубликованная версия неизменяема и хранит хеш своего текста. Публикация зеркалит документ на страницу WordPress, а для канонической политики конфиденциальности дополнительно проставляет её в штатную настройку страницы политики — отдельную страницу создавать и поддерживать вручную не нужно. Повторная публикация того же слага обновляет ту же страницу, дубликатов не появляется.
Контакт для обращений субъектов задаётся в Согласие 152-ФЗ → Настройки (адрес электронной почты и, по желанию, почтовый адрес). При публикации канонической политики конфиденциальности в её текст добавляется абзац с этим контактом и с законными сроками ответа.
Группы согласий
Группа согласий — это набор чекбоксов, который вы описываете один раз в Согласие 152-ФЗ → Группы согласий и ставите туда, где нужно собрать согласие. Отдельных настроек «на форму» нет: группа — единственный носитель конфигурации.
У группы есть слаг (латиница, цифры, дефис и подчёркивание), название и до семи чекбоксов. Каждый чекбокс задаётся четырьмя вещами:
- Цель обработки — идентификатор, по которому согласие потом ищут и отзывают. Цель уникальна для сайта и не может повторяться внутри группы.
- Подпись — текст рядом с галочкой. Допускаются ссылка, полужирный, курсив и перенос строки; всё остальное вырезается при сохранении.
- Обязательность — без обязательного чекбокса форма не отправится.
- Документ и режим версии — «действующая версия» следует за последней публикацией, «зафиксированная версия» замораживает конкретную. Привязка обязательна для каждого чекбокса.
Один набор спокойно смешивает разные документы: акцепт оферты, согласие на обработку персональных данных и необязательная подписка на рассылку — это три чекбокса одной группы, каждый со своей версией своего документа. В момент записи в согласие попадают идентификатор версии документа, хеш его текста и точный снимок подписи, которую увидел посетитель. Если вы позже отредактируете формулировку, старая запись сохранит ту, что была показана.
Если хотя бы один привязанный документ не опубликован, группа не отрисовывается целиком — чекбокс без документа порождал бы записи, которые ничего не доказывают.
Четыре способа поставить группу
- Шорткод
. - Блок «Согласие 152-ФЗ — группа согласий» в редакторе страниц.
- Тег шаблона
soglasie_152_consent_group( 'checkout' )— для тем, которые собирают формы сами. - Автоподключение к точке размещения: чекаут WooCommerce (классический и блочный), регистрация в «Моём аккаунте» WooCommerce, форма комментариев WordPress, форма регистрации WordPress, формы Contact Form 7 и WPForms. Точка выбирается в настройках самой группы.
Все четыре способа проходят через один и тот же серверный код, поэтому разметка и запись в журнале у них одинаковые.
Главное ограничение: группа живёт внутри чужой формы
Группа не является формой. Она рисует контейнер с чекбоксами, а записывает согласие скрипт плагина: он находит контейнер, поднимается до родительской формы и перехватывает отправку. Отсюда три практических следствия.
- Группа вне формы ничего не записывает. Посетитель увидит чекбоксы и отметит их, но согласия не будет — в консоли браузера появится предупреждение. Ставьте шорткод, блок или тег шаблона внутрь тега
<form>. - Одна группа на форму. Вторая группа на той же форме пропускается. Нужны ещё чекбоксы — добавьте их в ту же группу, до семи штук.
- Форме нужно поле e-mail. Для авторизованного посетителя субъект берётся из сессии WordPress, а для гостя — только из формы. Ставьте группу туда, где адрес и так спрашивают.
У группы две стратегии показа: встроенная (чекбоксы прямо в форме) и диалог (окно по нажатию на кнопку отправки, с клавиатурной навигацией и закрытием по Esc). Обе доступны на всех размещениях, кроме блочного чекаута WooCommerce — там встроить чекбоксы некуда, и показ всегда идёт диалогом.
Интеграции с формами
Плагин умеет подключать гейт согласий к пяти семействам форм. Все они требуют активной лицензии тарифа Personal или выше.
| Форма | Где выбирается группа |
|---|---|
| Contact Form 7 | Вкладка «Согласие 152-ФЗ» в редакторе конкретной формы. |
| WPForms (Lite и Pro) | Подраздел «Согласие 152-ФЗ» в разделе «Настройки» конструктора формы. |
| WooCommerce: классический чекаут, блочный чекаут, регистрация в «Моём аккаунте» | Точка размещения в настройках группы. |
| Форма комментариев WordPress | Точка размещения в настройках группы (форма на сайте одна). |
| Форма регистрации WordPress | Точка размещения в настройках группы (форма на сайте одна). |
Форма, которой не назначена ни одна группа, не гейтится вовсе — она ведёт себя так, будто плагина нет. Это позволяет включать согласия постепенно, форма за формой.
Записанные согласия связываются с сущностями сайта: с заказом WooCommerce, с созданным пользователем, с комментарием, а на WPForms Pro — с записью формы. Так по конкретному заказу или пользователю видно, какие согласия он дал.
Что делать, если запись согласия не удалась, выбирается в Настройки → Поведение интеграций с формами при сбое. «Реальный мир» (по умолчанию) пропускает отправку формы, чтобы сбой плагина не ломал чекаут; «Строгое соответствие» блокирует отправку и показывает сообщение об ошибке. Выбирайте второй режим осознанно: он останавливает продажи, когда что-то пошло не так.
Gravity Forms и Elementor Forms в поставку не входят. Собственную форму темы можно закрыть тегом шаблона или шорткодом — см. предыдущий раздел.
Cookie-баннер
Баннер включается сразу после активации плагина и показывается на страницах сайта до тех пор, пока посетитель не сделает выбор. Три действия равнозначны: принять всё, отклонить всё и настроить по категориям — отказ не спрятан за дополнительным экраном.
Категории по умолчанию:
- Строго необходимые — вход в личный кабинет, безопасность, корзина. Всегда включены и не отключаются.
- Функциональные — язык, оформление, регион.
- Аналитические — Яндекс Метрика, Google Analytics.
- Маркетинговые и Сторонние сервисы — доступны при активной лицензии.
Как долго помнить выбор посетителя, задаётся в Настройки → Период до повторного показа баннера: от 1 до 365 дней. Чтобы дать посетителю вернуться к своему выбору позже, поставьте на страницу шорткод или одноимённый блок — обычно такую ссылку кладут в подвал.
Гейтинг сторонних скриптов
Баннер сам по себе не мешает счётчикам загружаться. Чтобы сторонний тег не выполнялся до согласия, разместите его как неисполняемый и укажите категорию:
<script
type="text/plain"
data-soglasie152-category="analytics"
src="https://mc.yandex.ru/metrika/tag.js"
async
></script>
Работает и встроенный код — уберите src и положите тело скрипта внутрь тега. Когда посетитель разрешит эту категорию, плагин заменит заглушку исполняемым тегом и перенесёт на него все остальные атрибуты (async, defer, integrity и прочие). Замена одноразовая: отзыв согласия не отменяет уже выполненный скрипт — здесь нужна перезагрузка страницы.
Отдельно проверьте плагины кеширования и оптимизации: некоторые из них переписывают или вырезают теги type="text/plain", считая их сломанными. Для таких скриптов оптимизацию JavaScript нужно отключить.
Проверить результат просто: откройте вкладку «Сеть» в инструментах разработчика и перезагрузите страницу — до нажатия «Принять» запросов к адресу счётчика быть не должно.
Журнал согласий
Раздел Согласие 152-ФЗ → Согласия показывает все записи с фильтрами по статусу, датам и цели обработки. Каждая запись хранит, кто дал согласие, когда, на какую цель, на какую версию документа и с какой формулировкой перед глазами — вместе с хешем текста документа и хешем подписи.
Персональные данные субъектов лежат в базе зашифрованными; поиск по адресу идёт по хешу, а не по открытому тексту. В служебный журнал аудита персональные данные не попадают вовсе — субъект там представлен префиксом хеша.
Кнопка «Экспорт CSV» выгружает журнал файлом — это то, что предъявляют по запросу субъекта или проверяющего. Экспорт доступен на тарифе Personal и выше.
Обращения субъектов персональных данных
Публичной формы для обращений плагин не ставит, и это осознанное решение: 152-ФЗ требует опубликованного канала связи и способности выполнить требование, а не отдельного портала. Канал — контакт из настроек, который попадает в опубликованную политику конфиденциальности.
Когда обращение пришло на почту, работа идёт штатными инструментами WordPress: Инструменты → Экспорт персональных данных и Инструменты → Удаление персональных данных. Плагин подключается к ним, поэтому согласия попадают в общую выгрузку рядом с данными WooCommerce и форм, а при удалении обезличиваются. Эта интеграция требует активной лицензии.
Сроки ответа считает оператор сайта, и они разные: на предоставление сведений об обработке — 10 рабочих дней (ст. 20 ч. 1), на прекращение обработки после отзыва согласия — 30 дней (ст. 21 ч. 5). Общий «тридцатидневный срок» на запрос сведений не распространяется.
Обновления плагина
Пока лицензия активна, обновления приходят в стандартный раздел Плагины WordPress и ставятся кнопкой «Обновить» — отдельный канал обновлений не нужен. Проверка новых версий выполняется вместе с проверкой лицензии. Если лицензия не активирована или её срок вышел, обновления через WordPress не предлагаются, и новую сборку нужно ставить архивом вручную.
Перед обновлением, как и перед любым вмешательством в рабочий сайт, сделайте резервную копию базы и файлов.
Поддержка
Вопросы по установке и настройке — на support@marmyshev.ru. Чтобы разобраться быстрее, приложите к письму:
- домен сайта;
- первые символы лицензионного ключа (до третьей группы, целиком ключ присылать не нужно);
- версии WordPress и PHP — их видно в Инструменты → Здоровье сайта;
- точный текст сообщения об ошибке.
Плагин — техническое средство: он фиксирует согласия, хранит доказательства и помогает выполнить обращение субъекта. Он не пишет за вас политику обработки персональных данных, не подаёт уведомление в Роскомнадзор и не заменяет юридическую консультацию.