Последнее обновлене - 7 июля 2023 в 19:28
Эта короткая заметка о том, как проходит установка Google reCAPTCHA на сайт, работающий под управлением CMS WordPress. Есть много плагинов, которые реализуют такую возможность, но сегодня обойдёмся без них.
Надеюсь, нет необходимости объяснять, что сначала необходимо зайти на страницу сервиса и зарегистрировать там свой сайт. Вот эта страница — https://www.google.com/recaptcha/admin/create.
Некоторое время тому назад у меня стояла на сайте такая рекаптча от Google. Но со временем я от неё отказался из-за нагрузки, которую она создавала на сайте.
Но, тем не менее…Вот код, который необходимо вставить в файл function.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
## рекаптча add_action( 'wp_enqueue_scripts', 'add_recaptcha_js', 5, 1 ); function add_recaptcha_js() { // Регистрация reCAPTHCA api.js, version - null, in footer - false wp_register_script( 'recaptcha', 'https://www.google.com/recaptcha/api.js?hl=ru', array(), null, false ); // Подключение reCAPTHCA api.js wp_enqueue_script( 'recaptcha' ); } add_action('comment_form_after_fields', "recaptchadiv"); function recaptchadiv($post_id) { global $user_ID; $recaptcha_site_key = '6LdvuZgUAAAAAEbv-vukUoPJ5lbe18ejdLVVYt8_'; if ($user_ID) { return $post_id; } echo '<div class="g-recaptcha" data-sitekey="'.$recaptcha_site_key.'"></div>'; return $post_id; } function verify_recaptcha_response() { $recaptcha_secret_key = '6LdvuZgUAAAAANnDgE4U6h59kZQzATI0xw5hnVo1'; $recaptcha_site_key = '6LdvuZgUAAAAAEbv-vukUoPJ5lbe166ejdLVVYt8_'; if ( isset ( $_POST['g-recaptcha-response'] ) ) { $captcha_response = $_POST['g-recaptcha-response']; } else { return false; } // Verify the captcha response from Google $response = wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', array( 'body' => array( 'secret' => $recaptcha_secret_key, 'response' => $captcha_response ) ) ); $success = false; if ( $response && is_array( $response ) ) { $decoded_response = json_decode( $response['body'] ); $success = $decoded_response->success; } return $success; } add_action('preprocess_comment', "preprocess_comment_cb"); function preprocess_comment_cb($commentdata) { global $user_ID; if ($user_ID) { return $commentdata; } if ( ! verify_recaptcha_response() ) { echo '<p style="font-size: 1rem;">Вы не прошли защиту от спама Google reCAPTCHA. Вернитесь на <a href="#" onclick="history.go(-1);">предыдущую страницу</a> и повторите попытку.'; exit; } return $commentdata; } |
Конечно, значение для site_key необходимо подставить своё! И secret_key тоже.
Теперь в footer.php добавим скрипт:
1 |
<script src='https://www.google.com/recaptcha/api.js'></script> |
Готово, теперь должно работать. Можно добавить ещё код в форму комментирования:
1 |
<div class=”g-recaptcha” data-sitekey=”6LdvuZgUAAAAAEbv-vukUoPJ5lbe59ejdLVVYt8_”></div> |
Всем WEB!