У цій статті ми створимо плагін, який на цей раз буде інтегрувати CAPTCHA (Google reCAPTCHA) з формою реєстрації WordPress за замовчуванням. Звичайно, HTTP API буде використовуватися для зв’язку з ReCaptcha для перевірки відповіді, що надається користувачем на запит CAPTCHA.

Нижче наведено скріншот форми реєстрації, захищеної CAPTCHA для запобігання спам-реєстрацій:

Для чого інтегрувати CAPTCHA в форму реєстрації?

У зв’язку із зростанням популярності WordPress сайти, створені на базі цієї CMS, стали легкою мішенню для недобросовісних користувачів, що використовують програмне забезпечення для автоматизованих реєстрацій.

Це програмне забезпечення сканує мережу в пошуках сайтів, створених на WordPress, і починає реєструвати сотні і тисячі акаунтів кожну хвилину.

Коли я тільки починав працювати з WordPress, я пам’ятаю, як прокинувся одного ранку, а моя поштова скринька була повна повідомлень про реєстрацію більше п’ятдесяти облікових записів користувачів.

Одним з перевірених і надійних способів зниження а, можливо, і повного усунення спаму, є реалізація в веб-формах CAPTCHA.

CAPTCHA — це програма, яка захищає веб-сайти від ботів шляхом створення і сортування тестів, які люди можуть пройти, а програми на нинішньому рівні розвитку не можуть.

Завдяки інтеграції CAPTCHA в форму реєстрації WordPress, спам-реєстрації скоро стануть для вас лише спогадами з минулого.

Розробка плагіна

Перш ніж ми почнемо складати код плагіна, давайте зайдемо на reCAPTCHA, зареєструємо ваше доменне ім’я і візьмемо ваші public і private API-ключі.

По-перше, включаємо заголовок плагіна:

Створюємо клас PHP з двома властивостями, в яких будуть зберігатися ваші приватний і публічний ключі:

class Captcha_Registration_Form {
/** @type string private key|public key */
private $public_key, $private_key;

Метод конструктора плагіна буде складатися з двох звернень дій, які будуть додавати питання CAPTCHA в форму реєстрації та перевіряти відповіді на них:

/** конструктор класу */
public function __construct() {
$this->public_key = ‘6Le6d-USAAAAAFuYXiezgJh6rDaQFPKFEi84yfmc’;
$this->private_key = ‘6Le6d-USAAAAAKvV-30YdZbdl4DVmg_geKyUxF6b’;
// додає captcha в форму реєстрації
add_action( ‘register_form’, array( $this, ‘captcha_display’ ) );
// аутентифікує відповідь captcha
add_action( ‘registration_errors’, array( $this, ‘validate_captcha_field’ ), 10, 3 );
}

Метод captcha_display(), який буде виводити reCAPTCHA, додається у форму реєстрації WordPress через дію register_form.

Метод validate_captcha_field(), який перевіряє, що: поле CAPTCHA заповнено, а також перевіряє відповідь, наданий користувачем, — додається в систему перевірки реєстрації дією registration_errors.

Нижче наведено код методів captcha_display() і validate_captcha_field(), про які я тільки що розповів:

/** Висновок поля форми reCAPTCHA. */
public function captcha_display() {
?>