
Age Verification 18+ для WooCommerce — проверка возраста покупателя на товаре и категории, блокировка чекаута, журнал для DE/AT/CH
Плагин для WooCommerce-магазинов с алкоголем, табаком, вейпами, ножами, пиротехникой или химией для рынка Германии, Австрии и Швейцарии. Минимальный возраст задаётся категории, товару или вариации, покупатель указывает дату рождения только тогда, когда в корзине действительно есть такой товар, а заказ без подтверждения не проходит ни на классическом, ни на блочном чекауте. Ответ записывается в заказ и в журнал проверок. Базовая версия бесплатна; Pro — возраст по стране доставки с пресетами DE/AT/CH, ограничение способов доставки и оплаты, пометка для доставки, CSV-экспорт журнала.
- Совместимость
- WordPress 6.2+ · WooCommerce 7.0+ (проверено на WordPress 7.1 и WooCommerce 11.1) · PHP 7.4+ · классический и блочный чекаут · HPOS и классическое хранилище заказов · интерфейс на английском и немецком
- Лицензия
- один сайт, годовая
- Триал
- 7 дней, без карты, один на сайт
- Обновлено
- сентябрь 2026
Что есть во Free,
а что даёт Pro
Бесплатная версия работает без ограничения по времени. Pro добавляет остальные функции из таблицы.
Главное о модуле
Как это выглядит для покупателя
Покупатель открывает товар с минимальным возрастом — рядом с названием стоит отметка 18+.
Что получает админ
Настройки — в WooCommerce → Age verification, четыре вкладки: «Log», «Settings», «Rules» и «Licence».
Pro: возраст по стране доставки и сама доставка
Возрастные границы различаются между странами, поэтому Pro позволяет задать минимальный возраст по стране доставки — для всего ограниченного или для конкретной категории.

Триал стартует, когда вы попросите
Свежая установка — бесплатная версия, ничего не включается само. Кнопка «Попробовать Pro 7 дней» → e-mail → ключ сразу в окне и письмом.

Один ключ — один сайт
Переносите магазин — отвяжите лицензию на старом домене и активируйте на новом сами. Если наш сервер недоступен, Pro работает ещё 14 дней. Для студий — ключи на 5, 25 сайтов или без ограничений.
Технические требования
WordPress 6.2+ и WooCommerce 7.0+. Сквозной прогон — на WordPress 7.1 и WooCommerce 11.1.
PHP 7.4+. Полный прогон магазина — на PHP 8.3; на 7.4 проверены синтаксис и собственные тесты плагина.
Чекаут. Классический (шорткод) и блочный — оба проверены. Заказы — HPOS и классическое хранилище.
Темы. Проверено на Twenty Twenty-Five и Storefront; окно берёт шрифт темы.
Кеш страниц. Окно спрашивает сервер, открываться ли, поэтому закешированная страница не показывает его снова тому, кто уже ответил, и не прячет от нового гостя. Вживую проверено с WP Super Cache; другие кеши — нет. На страницах без возрастных товаров дополнительного запроса нет.
Языки. Интерфейс и окно — на английском и немецком (de_DE). Русского и украинского в модуле нет: он сделан для рынка DACH.
История версий
Первый публичный релиз под названием Age Verification 18+ for WooCommerce.
Вместе с Age Verification 18+ для WooCommerce покупают
4 модуля одним заказом — на 40% дешевле, чем по отдельности


Nova Poshta Premium — модуль Новая Почта для OpenCart 2.3, 3.x и 4.x

LiqPay — оплата картой для OpenCart 2.3, 3.x и 4.x

Telegram-уведомления и Viber/SMS покупателям для OpenCart
Полное описание модуля
Age Verification 18+ для WooCommerce — плагин для магазинов, которые продают товары с возрастным ограничением в Германию, Австрию и Швейцарию: алкоголь, табак и вейпы, ножи, пиротехнику, опасную химию. Большинство плагинов проверки возраста ставят одну заставку перед всем сайтом. Для смешанного магазина это неудобно: покупатель шампуня видит вопрос о возрасте, а в заказ ничего не записывается.
Здесь возраст принадлежит товару. Вы задаёте минимальный возраст категории (или отдельному товару либо вариации), и магазин спрашивает только тогда, когда в корзине действительно есть такой товар: на странице товара, при добавлении в корзину и перед оформлением. Заказ без подтверждения не проходит ни на классическом, ни на блочном чекауте — проверка стоит на сервере, а не только в окне. Ответ записывается в заказ и в журнал, который магазин может показать, когда его спросят, проверял ли он возраст.
Чего плагин не делает. Дата рождения, введённая в браузере, — это заявление покупателя, а не проверка личности. Плагин не заменяет идентификацию и не делает магазин «соответствующим закону» автоматически: достаточно ли такого процесса для ваших товаров, решает ваш юрист. Он документирует, что магазин спросил, останавливает заказы, которые правило не проходят, а в Pro позволяет закрыть разрыв там, где это реально можно сделать, — на доставке, с курьером, который проверяет документ при вручении.
Как это выглядит для покупателя
Покупатель открывает товар с минимальным возрастом — рядом с названием стоит отметка 18+. Если включён вопрос на странице товара, сразу открывается окно; если нет — оно появляется, когда покупатель жмёт «В корзину» или переходит к оформлению. В окне три поля: день, месяц, год рождения. Курсор уже в первом поле и сам переходит дальше, когда число введено. Вместо даты можно включить подтверждение одним кликом — более мягкий вариант, который доказывает меньше.
Взрослая дата — окно закрывается, ответ запоминается на выбранный срок (по умолчанию 30 дней), товар добавляется в корзину. Дата, по которой покупателю меньше нужного возраста, даёт отказ; после трёх таких попыток (число настраивается) окно блокируется, и покупателя можно перенаправить на вашу страницу, например с объяснением возрастных ограничений. Обычные товары без возраста покупаются как всегда, без всяких вопросов.
Закрыть окно и оформить заказ в обход не получится. На блочном чекауте нажатие «Place order» без подтверждения показывает баннер с названием товара и нужным возрастом, и заказ не создаётся. На классическом чекауте WooCommerce показывает своё стандартное сообщение о проблеме с товарами в корзине, а в самой корзине видно, какого возраста требует товар; форма оформления не появляется, пока покупатель не ответит. С отключённым JavaScript заказать тоже невозможно.
Что получает админ
Настройки — в WooCommerce → Age verification, четыре вкладки: «Log», «Settings», «Rules» и «Licence». Над вкладками — краткое состояние: что именно защищено, сколько категорий имеют правило, сколько попыток заблокировано за 30 дней, бесплатная или Pro-версия. На немецком админка называется «Altersverifikation».
На вкладке «Rules» каждой категории можно задать минимальный возраст одним числом. Подкатегории его наследуют, и это видно сразу: рядом с «Whisky» стоит «18+ (from Spirituosen)», так же в колонке «Age» в списке категорий и товаров. Отдельный товар или вариацию можно поднять выше или освободить от правила категории, вписав 0.
На вкладке «Settings» — включатель окна (после установки оно выключено), что защищать (только товары с возрастом или весь магазин), возраст по умолчанию, способ ответа, срок памяти, число попыток, адрес для заблокированных, вопрос при добавлении в корзину и на странице товара, отметка на товарах, запись в заказ, свои тексты окна с подстановкой {age}, а также журнал: вести или нет и как хранить IP.
В каждом заказе с возрастным товаром появляется заметка вроде «Age verification: 18+ required, customer confirmed 36 (date of birth: 1990-03-15)», а на экране заказа — панель «Age verification»: для какого возраста подтверждено, заявленный возраст, дата рождения, референс журнала и прямая подсказка, что это заявление покупателя, а не проверка личности. Панель работает и с HPOS, и с классическим экраном заказов.
Вкладка «Log» — журнал всех проверок: «Confirmed», «Too young», «Blocked», «Order placed». В каждой строке дата, требуемый и заявленный возраст, дата рождения, заказ, страна и референс, который связывает подтверждение с заказом. Журнал фильтруется по событию, заказу и датам. Записи только добавляются, их не редактируют.
Pro: возраст по стране доставки и сама доставка
Возрастные границы различаются между странами, поэтому Pro позволяет задать минимальный возраст по стране доставки — для всего ограниченного или для конкретной категории. Правило страны может возраст только поднять, никогда не понизить. Есть стартовые пресеты для Германии, Австрии и Швейцарии, и они намеренно строгие: 18+ на всё ограниченное, что едет в страну. Там, где закон разрешает меньше (например, пиво и вино с 16), категорию нужно понизить сознательно. В тесте 17-летний покупатель, подтверждённый для 16+, оформил заказ с адресом в Германии, а с адресом в Швейцарии получил отказ с точным текстом. На блочном чекауте правило страны срабатывает на «Place order»: при смене страны баннер не появляется сразу, но заказ отклоняется.
Вторая часть Pro — доставка. Для заказов с возрастными товарами можно оставить только выбранные способы доставки — курьера с проверкой документа при вручении или самовывоз — и скрыть способы оплаты, например наложенный платёж. Обычная корзина видит все способы, как и раньше. В заказ и в письмо клиенту добавляется пометка «hand over only against an ID showing an age of 18 or more» (текст можно изменить). Ещё в Pro — CSV-экспорт журнала за период, автоматическое удаление старых записей и ваш логотип и цвет в окне проверки.
Австрия и табак. § 2a TNRSG полностью запрещает почтовую продажу табачных и родственных изделий в Австрии. Никакая проверка возраста этого не меняет, поэтому для табака и вейпов в Австрию плагин не решение — такие товары туда не отгружаются вообще.
Как это работает — шаг за шагом
- Для каждого товара в корзине определяется минимальный возраст: вариация, затем товар, затем его категории с учётом родительских; в Pro — ещё правило страны доставки, которое может только поднять возраст.
- Если в корзине есть товар с возрастом, а ответа ещё нет, покупатель видит окно — на странице товара, при добавлении в корзину или на чекауте.
- Ответ проверяется на сервере. Взрослая дата записывается в сессию на выбранный срок и в журнал как «Confirmed»; слишком ранняя — как «Too young», со счётчиком попыток.
- Перед созданием заказа сервер ещё раз сверяет корзину с ответом — отдельно для классического чекаута и для блочного через Store API. Нет подтверждения — нет заказа.
- Созданный заказ получает данные проверки, заметку, панель на экране заказа и строку «Order placed» в журнале с тем же референсом.
- В Pro к «возрастному» заказу применяются ограничения доставки и оплаты и пометка для вручения.
Что под капотом
- Блокировка на сервере. Классический чекаут —
woocommerce_add_to_cart_validation,woocommerce_check_cart_items,woocommerce_checkout_process; блочный — ошибки корзины Store API и отказ во время создания заказа. Одинаковое решение в одном месте. - Окно выводится обычным HTML в футере, без отдельной сборки для блоков, и появляется одинаково на обоих чекаутах.
- Журнал — отдельная таблица, записи только добавляются. IP по умолчанию хешируется: повторные попытки с одного устройства видны, а сам идентификатор не хранится.
- Сессия. Для гостя, который ответил в окне, стартует сессия WooCommerce (cookie
wp_woocommerce_session_*) — без неё не работал бы лимит попыток. - Хуки для разработчика:
ccav_product_required_age— последнее слово о возрасте товара,ccav_order_verified— заказ только что отмечен как проверенный. - Удаление. Журнал по умолчанию остаётся: это доказательство, что магазин спрашивал. Чтобы убрать всё, добавьте
define( 'CCAV_DELETE_DATA', true );в wp-config.php перед удалением.
Как установить
- Скачайте архив
catcode-age-verification-for-woocommerce-1.0.1.zipкнопкой вверху страницы: Плагины → Добавить новый → Загрузить плагин → Установить → Активировать. - WooCommerce → Age verification → «Rules»: задайте минимальный возраст каждой категории с регулируемыми товарами. Отдельные товары можно изменить на экране редактирования товара.
- «Settings»: выберите, что защищать (только товары с возрастом или весь магазин), как покупатель отвечает и сколько помнить ответ.
- Включите «Age gate» и сделайте тестовый заказ с возрастным товаром — на классическом и блочном чекауте, если в магазине есть оба.
- Для Pro: вставьте ключ из письма после оплаты на вкладке «Licence» или нажмите «Try Pro free for 7 days».
Вопросы
о модуле
Не нашли ответ? Напишите в Telegram — ответим в течение рабочего дня.
Плагин делает мой магазин соответствующим закону?
Ни один плагин этого не гарантирует, и мы этого не обещаем. Дата рождения, введённая в браузере, — это заявление покупателя, а не проверка личности. Плагин фиксирует, что магазин спросил, что ответили и когда, и не пропускает заказ, который правило не проходит. Достаточно ли этого для ваших товаров, решает ваш юрист. Там, где нужна настоящая идентификация, она происходит при вручении — для этого в Pro есть ограничение способов доставки.
Какой возраст ставить?
Это зависит от товара и страны доставки и остаётся ответственностью магазина. Для ориентира из официальных текстов (09/2026): в Германии пиво, вино и игристое — с 16, остальной алкоголь — с 18 (§ 9 JuSchG), табак, никотиновые продукты и электронные сигареты — с 18, в том числе по почте (§ 10 JuSchG). В Швейцарии алкогольные напитки — с 16, крепкий алкоголь — с 18. Пресеты Pro намеренно строгие: 18+ на всё ограниченное, поэтому пиво и вино 16+ нужно понизить на категории вручную.
Можно продавать табак и вейпы в Австрию?
Нет, и плагин этого не меняет: § 2a TNRSG полностью запрещает почтовую продажу табачных и родственных изделий в Австрии. Проверка возраста тут не поможет — такие товары просто не должны отгружаться в Австрию.
Покупатель закрыл окно. Он может заказать?
Нет. Окно — лишь удобный способ ответить. Проверка стоит на сервере: закрытое окно, заблокированный скрипт или прямой запрос к Store API заканчиваются тем же отказом. Мы проверили это на классическом чекауте с отключённым JavaScript и на блочном чекауте.
А если покупатель почистит cookies?
Тогда окно спросит снова, и лимит неудачных попыток начнётся с нуля — так работает любая проверка в браузере. Заказ без подтверждения всё равно не пройдёт. Именно поэтому для товаров, где нужна настоящая проверка, Pro ограничивает доставку курьерами, которые проверяют документ.
Дата рождения — это персональные данные?
Да. Она хранится в заказе и в журнале, потому что именно в этом смысл записи. IP по умолчанию хешируется (или не пишется совсем), а Pro может удалять старые записи журнала автоматически. Для гостя, который ответил в окне, WooCommerce открывает свою сессионную cookie — она нужна для лимита попыток; упомяните её в политике cookies как технически необходимую.
Работает с блочным чекаутом?
Да. Правило действует и через Store API: блоки корзины и чекаута показывают ошибку, а заказ отклоняется ещё до создания. Окно выводится обычным HTML в футере и одинаково появляется на обоих чекаутах.
В плагине есть русский или украинский язык?
Нет. Модуль сделан для рынка Германии, Австрии и Швейцарии: интерфейс и окно для покупателя — на английском и немецком, язык подбирается по языку сайта.
Сколько стоит?
Базовая версия бесплатна. Pro — 990 грн в год, более долгий срок дешевле: 2 года — 1 880 грн, 5 лет — 3 710 грн. Автосписаний нет. Купленная лицензия оставляет Pro-функции навсегда, а срок покрывает обновления и поддержку.
Пока нет ни одного отзыва. Будьте первым.
Пока вопросов нет. Спроси — мы ответим в течение 24 часов.
Не тот вариант, что искали?
Делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.
Заказать кастомный модуль
Покупка модуля
—


