Невидимая защита от спама

Смысл работы данной защиты в следующем:

  • При создании формы в Contact Form 7 на вкладке «Шаблон формы» мы вставляем поле acceptance (принятие) со следующими параметрами:
[acceptance acceptance-147 class:agree default:on invert]

class:agree – присваиваем полю класс agree
default:on – по умолчанию поле отмечено галочкой
invert – отправка формы происходит при снятой галочке

Вы можете скопировать и использовать мой шорт код. Или же можно сгенерировать шорткод заново. Для этого кликаем по кнопке «принятие» и в открывшемся окне заполняем поля, как показано на скриншоте:

Как сгеннерировать поле принятие
  • Переходим в раздел «Внешний вид» — «Редактор» или подключаемся по FTP к нашему сайту и открываем файл footer.php, пролистываем в самый конец документа и перед закрытием тега </body> вставляем данный фрагмент кода:
<script>
jQuery(document).ready(function($) {
jQuery('.agree').prop('checked', false);
});
</script>

Сохраняем документ и в браузере открываем страницу с нашей формой. Должно получиться как-то так:

  • Логика работы защиты заключается в следующем:По умолчанию, при загрузке формы, галочка снимается скриптом, бот видя пустое поле заполняет его, т.е. ставит галочку, и в результате форма не отправляется, так как для отправки поле acceptance должно быть не заполненным.
  • Для того, что бы пользователь не видел данное поле, нам нужно в текстовом редакторе NotePad++ открыть файл style.css активной темы и скрыть класс agree:
.agree {
display:none;
}

Открыть этот файл можно так же в разделе «Внешний вид» — «Редактор» — файл «Таблица стилей (style.css)». Код добавляем в самом конце.

В итоге мы получаем чистую и красивую форму со скрытой защитой от спама.

Доработанная защита от спама:

Данный вариант отлично справляется со своей задачей. Но в процессе использования выявился один недостаток. Почему то, данный скрипт не работает с последними версиями Contact Form 7, начиная с версии 5.0.

Это связано с тем что в новых версиях плагина код для полей формы генерируется немного по другому. Поэтому я немного переделала скрипт, и изменила функцию, которая снимает галочку с поля acceptance при загрузки формы. Вот, что у меня получилось:

<script>
var x = document.getElementsByClassName("agree");
var i;
for (i = 0; i < x.length; i++) {
x[i].checked = false;
}
</script>

Логика работы защиты от спама не поменялась. Подключение скрипта так же происходит в файле footer.php, перед закрытием тега </body>.

Предыдущая запись
Парсинг контента в wordpress
Следующая запись
Иcпoльзoвaть кэш бpayзepa, включить cжaтиe.
Меню