Плагин DW Questions & answers — один из лучших плагинов для WordPress для организации блока «Вопрос-ответ» на сайте. Однако, благодаря его распространённости, его полюбили спамеры, а стандартная captcha ужасна — её даже не нужно разгадывать, правильный ответ передаётся в коде.
Конечно, есть вариант поставить платное дополнение от DesignWall, но, судя по отзывам, работает оно не самым лучшим образом.
Предлагаю сегодня разобрать вопрос установки Google reCAPTCHA в форму вопроса DW Questions & answers.
Предварительная подготовка
Перед тем, как начинать править код, нужно перенести шаблоны DW Questions & answers в папку темы, чтобы их можно было безболезненно настраивать, не опасаясь обновления плагина. Для этого нужно перенести все шаблоны из папки templates
плагина в папку dwqa-templates
вашей темы.
Добавляем Google reCAPTCHA
Принцип использования reCAPTCHA в нашем случае — мы отключаем кнопку submit формы и открывает её callback-функция в случае удачного разгадывания капчи.
Для этого нужно:
- Отключить кнопку Submit
- Добавить код вызова капчи
- Добавить функцию, включающую кнопку после разгадывания капчи
Добавляем капчу в форму вопроса
Начнём с формы вопроса, её шаблон находится в файле (ваша папка темы)\dwqa-templates\question-submit-form.php
Отключаем кнопку и даём ей уникальный идентификатор. Для этого ищем строчку, начинающуюся с <input type="submit" name="dwqa-question-submit"
и меняем её на следующую:
<input type="submit" name="dwqa-question-submit" id="question-submit-button" value="<?php _e( 'Submit', 'dwqa' ) ?>" disabled >
В месте, где должна стоять капча, добавлем собственно капчу:
<div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="site-key"></div>
Вместо site-key
нужно поставить код сайта, полученный у Google
После формы добавляем скрипт вызова капчи и callback-функцию:
<script src='https://www.google.com/recaptcha/api.js?hl=ru'></script>
<script>
function recaptchaCallback ( code )
{
if(code != "")
{
document.getElementById("question-submit-button").disabled = false;
}
}
</script>
Аналогичным образом дорабатываем форму ответа (файл answer-submit-form.php), если у вас разрешены ответы анонимных пользователей.
Не знаю, жив ли блог)
Спасибо за статью! Поставил каптчу в форму вопроса.
Но в форму ответа не получается. Делаю все тоже самое, но не срабатывает. Я так понимаю, это связано с тем что там есть еще доп.поля (видимость ответа – всем, личный) и из-за этого как-то по другому отправка идёт.
Не могли бы посмотреть? Или как раз не вышло это сделать, поэтому нет информации?
У заказчика отвечают только редакторы сайта, поэтому задачу не реализовывал.
В форме ответа нужно в файле answer-submit-form.php добавить disabled к кнопке
И соответственно в функции recaptchaCallback заменяем строчку на
Если что-то пойдёт не так — пишите, что именно не работает (кнопка не отключается, не включается и т.п.)
Все работает как часики)
Спасибо!