wordpress google invisible recaptcha

Плагин Contact Form 7 уже имеет встроенную поддержку google recaptcha. Достаточно прописать ключи в Contact Form 7 — Интеграция. А в самой форме вставить шорткод

[recaptcha]

Как получить ключи и подключить рекапчу писал в статье http://phpjs.ru/2017/07/18/google-captcha-v2/.
Для невидимой капчи есть плагин. Но я люблю велосипеды.  В той же статье читаем как подключать невидимку. Гугл рекапча привязана к кнопке сабмита. Меняем ее в форме


<button class="g-recaptcha" data-sitekey="6Lc3likUAAAAANxk2iL3pOE4EvMwIZHadasfasdfsdfa" data-callback="onSubmit">Отправить</button>

Далее на странице с формой подключаем скрипт рекапчи, добавляем колбек, id формы.


  <script type="text/javascript"
      src="https://www.google.com/recaptcha/api.js?hl=ru">
  </script>
<script type="text/javascript">
<!--
       var onSubmit = function(token) {
       document.getElementById("id_of_form").submit();

     }
//--></script>

// тут шорткод
contact-form-7 id="9999999" html_id="id_of_form" title="Написать мне"

На бэке надо будет обработать значение post-переменной g-recaptcha-response.

 


// define the wpcf7_validate callback 
function filter_wpcf7_validate( $result, $tags ) { 
    // make filter magic happen here... 
	if(!empty($_POST['g-recaptcha-response'])){

		$secret = '6Lc3likUAAAdA123R1d_Tlk2pFi1233wG29fdfs72I';
		$rec = new ReCaptcha($secret);  
		            $resp = $rec->verify(
                $_POST["g-recaptcha-response"],
                $_SERVER["REMOTE_ADDR"]
            );
        $res =  $resp->isSuccess(); 
	    if($res == false){
            	
			$captchaTag = new WPCF7_FormTag(array('type'=>'text', 'basetype'=>'text', 'name'=>'captcha_input'));
			$result->invalidate($captchaTag, 'The entered text did not match the captcha.');
        }


	}
    return $result; 
}; 
         
// add the filter 
add_filter( 'wpcf7_validate', 'filter_wpcf7_validate', 10, 2 ); 

Leave a comment

Your email address will not be published.


*