Captcha for Simple Job Board


Есть вот такой плагин поиска работы для вордпресса Simple Job Board и понадобилось прикрутить к нему капчу. Будем прикручивать рекапчу от гугла.

  1. Первым делом идем на гитхаб reCAPTCHA PHP client library и качаем архив с последней версией. Далее внутри папки плагина создаем папку recaptcha и в нее копируем содержимое архива из папки src - в итоге у нас в папке рекапчи будет лежать файл autoload.php и сама папка модуля ReCaptcha.Captcha for Simple Job Board
  2. Идем редактировать файл с формой отправки /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 вставляем свой ключ полученный на сайте гугла. После этих действий у нас уже начнет отображаться капча:
    Captcha for Simple Job Board

  3. Далее идем подключать валидацию капчи. Форма у нас отправляется посредством 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 подставляем свой секретный ключ полученный на сайте гугла.

  4. Далее правим функцию в скрипте 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');
    }

Вот и все правки по установке капчи 😉