Запрет дубликатов при заполнении в поле формы CF7 — Contact Form 7

Запрет дубликатов при заполнении в поле формы CF7Источник: http://cfdbplugin.com/?page_id=904

Ситуация: Есть Пользователи, которые заполняют формы (плагин Contact Form 7), но вы не хотите, чтобы они имели возможность заполнять их несколько раз.

Решение: Добавить проверку в область формы, и запретить дубликаты в базе для одного из полей формы. Удобнее всего это делать для e-mail. В итоге, если пользователь вводит e-mail повторно — ему выдается сообщение об ошибке.

Хук запрета дубликатов для CF7

  1. Для работы этого хука у вас должны быть установлены следующие плагины:

  2. Скопировать название формы, и название поля формы, для которого нужно будет установить хук.
    В примере ниже это email_123
  3. Для создания проверки, нужно добавить фильтр. Для этого удобно пользоваться плагином Shortcodes Actions and Filters.
    Перейти, Инструменты -> Shortcodes Actions and Filters. Нажать Add new и вставить следующий код:

    В этом коде нужно будет следать изменения в my_validate_email function:

    • Изменить название формы для $formName
    • Изменить название email поля для $fieldName
    • Написать текст, который будет поялвяться при наличии дубликатов $errorMessage

    Note: Название формы и название email поля должны быть уникальными и не повторяться в других формах, иначе будет путаница.

Разрешено более, чем одно совпадение

Бывают случаи, когда запрет дубликатов должен быть, но при этом должно быть разрешено более, чем одно совпадение. Например, нужно пропустить 5 одинаковых мейлов, а 6-й уже запретить.
Для этого в фильтр добавляется счетчик:

В этом коде дополнительно еще нужно внести изменения в строку:

Цифра 4 говорит о том, что фильтр пропустит 5 одинаковых мейлов. Если нужно, например, пропуситить 3 мейла, тогда измените цифру 4 на 2. И так далее…


Подпишитесь на RSS канал - если Вы хотите первыми узнавать о новых статьях на сайте!!!

Статьи по теме:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *