Есть вот такой плагин поиска работы для вордпресса Simple Job Board и понадобилось прикрутить к нему капчу. Будем прикручивать рекапчу от гугла.
- Первым делом идем на гитхаб reCAPTCHA PHP client library и качаем архив с последней версией. Далее внутри папки плагина создаем папку recaptcha и в нее копируем содержимое архива из папки src - в итоге у нас в папке рекапчи будет лежать файл autoload.php и сама папка модуля ReCaptcha.
- Идем редактировать файл с формой отправки
/wp-content/plugins/simple-job-board/templates/job-application.php
- находим в нем<input type="hidden" name="wp_nonce" value="<?php echo wp_create_nonce('the_best_jobpost_security_nonce') ?>" >
и ниже добавляем вывод капчи
<div class="sjb-form-group" id="sjb-form-padding-button"> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <div class="g-recaptcha job_cap22" data-sitekey="YOUR_SITE_KEY"></div> </div>
Вместо
YOUR_SITE_KEY
вставляем свой ключ полученный на сайте гугла. После этих действий у нас уже начнет отображаться капча:
- Далее идем подключать валидацию капчи. Форма у нас отправляется посредством ajax - идем править этот файл
/wp-content/plugins/simple-job-board/includes/class-simple-job-board-ajax.php
находим функциюpublic function process_applicant_form() {
и после начального кода
if (!wp_verify_nonce($nonce, 'the_best_jobpost_security_nonce')) die('Not Working');
добавляем нашу валидацию
if (!isset($_POST['g-recaptcha-response'])) die('Not Working'); if (isset($_POST['g-recaptcha-response'])): require_once __DIR__ . '/../recaptcha/autoload.php'; $secret = "YOUR_SECRET_TOKEN"; $recaptcha = new \ReCaptcha\ReCaptcha($secret); $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']); if ($resp->isSuccess()): //continue to do else: do_action('sjb_job_submission_validation_error_before'); $errors = '<div id="uploded-file-error"><strong style="color:red;">Captcha Not Valid!</strong> '; $response = json_encode(array('success' => 'bad_captcha', 'error' => $errors)); header("Content-Type: application/json"); echo apply_filters('sjb_job_submit_validation_errors', $response); do_action('sjb_job_submission_validation_error_after'); die(); endif; endif;
и вместо
YOUR_SECRET_TOKEN
подставляем свой секретный ключ полученный на сайте гугла. - Далее правим функцию в скрипте ajax-отправки по адресу
/wp-content/plugins/simple-job-board/public/js/simple-job-board-public.js
находим код удачной отправки формыif (response['success'] == true) { $('.jobpost_form').slideUp();
и перед ним добавляем наш ответ от сервера в случае, если капча введена не верно
if (response['success'] == 'bad_captcha') { jobpost_form_status.html(response['error'] + application_form.jquery_alerts['application_not_submitted'] + '</div>'); jobpost_submit_button.removeAttr('disabled'); }
Вот и все правки по установке капчи 😉