Implementare Google reCAPTCHA in Wordpress fara Plugin 1 0

Ultima actualizare pe 2024-02-13 17:38:39 in Optimizare Site-uri Web » Optimizare Wordpress » Securitate
Postat de A.W.P.S

Implementare Google reCAPTCHA in Wordpress fara Plugin

Pentru a implementa Google reCAPTCHA în formularul de comentarii WordPress fără a folosi un plugin, va trebui să urmezi câțiva pași pentru a te înregistra pentru reCAPTCHA, adăuga codul necesar în site și apoi valida răspunsul captcha. Vom folosi Google reCAPTCHA v2, care afișează o casetă de bifat "Nu sunt un robot".


Pasul 1: Înregistrarea pentru Google reCAPTCHA


  1. Accesează Google reCAPTCHA și autentifică-te cu contul tău Google.
  2. Înregistrează-ți site-ul alegând versiunea reCAPTCHA v2 și tipul "I'm not a robot" Checkbox.
  3. Notează cheia site-ului (site key) și cheia secretă (secret key) furnizate după înregistrare.

Pasul 2: Adăugați reCAPTCHA la formularul de comentarii

Adaugă codul reCAPTCHA în formularul de comentarii utilizând hook-ul comment_form în functions.php al temei tale:

function custom_add_recaptcha_to_comment_form() {
    $site_key = 'YOUR_SITE_KEY'; // Înlocuiește cu cheia site-ului tău
    echo '<div class="g-recaptcha" data-sitekey="' . $site_key . '"></div>';
    echo '<script src="https://www.google. com/recaptcha/api.js" async defer></script>';
}
add_action('comment_form_after_fields', 'custom_add_recaptcha_to_comment_form');

Pasul 3: Validați răspunsul reCAPTCHA

Pentru a valida răspunsul reCAPTCHA când formularul este trimis, folosește hook-ul preprocess_comment:

function custom_validate_recaptcha_field_comment($commentdata) {
    $secret_key = 'YOUR_SECRET_KEY'; // Înlocuiește cu cheia secretă
    $response = isset($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : '';
    $remote_ip = $_SERVER['REMOTE_ADDR'];
    $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
    $recaptcha_response = wp_remote_post($recaptcha_url, array(
        'body' => array(
            'secret' => $secret_key,
            'response' => $response,
            'remoteip' => $remote_ip
        )
    ));
    $recaptcha_response_body = wp_remote_retrieve_body($recaptcha_response);
    $result = json_decode($recaptcha_response_body, true);

    if (empty($response) || !$result['success']) {
        wp_die('Eroare: Verificarea reCAPTCHA a eșuat. Vă rugăm să încercați din nou.');
    }
    return $commentdata;
}
add_filter('preprocess_comment', 'custom_validate_recaptcha_field_comment');

Considerații

Înlocuiește 'YOUR_SITE_KEY' și 'YOUR_SECRET_KEY' cu cheile reale obținute de la Google.

Acest cod necesită ca funcțiile wp_remote_post() și wp_remote_retrieve_body() să fie disponibile în instalarea ta WordPress, ceea ce ar trebui să fie standard.

Testează implementarea pentru a te asigura că reCAPTCHA este afișată și validată corect.

Având în vedere utilizarea funcțiilor de la distanță (wp_remote_post()), asigură-te că serverul tău poate face cereri externe.

Implementarea Google reCAPTCHA este o metodă eficientă de a reduce spamul și de a securiza formularul de comentarii, păstrând în același timp o bună experiență de utilizator.

Pentru formulaul de inregistrare

Pentru a adăuga Google reCAPTCHA la formularul de înregistrare în WordPress fără a utiliza un plugin, procesul este similar cu adăugarea lui la formularul de comentarii, dar vei lucra cu acțiunile și filtrele asociate formularului de înregistrare. Acest exemplu se va concentra pe reCAPTCHA v2 "I'm not a robot" Checkbox.

Pasul 1: Înregistrează site-ul tău pentru Google reCAPTCHA

Dacă nu ai făcut-o deja, trebuie să înregistrezi site-ul tău pe Google reCAPTCHA și să obții cheia site-ului (site key) și cheia secretă (secret key).

Pasul 2: Adaugă reCAPTCHA la formularul de înregistrare

Pentru a adăuga reCAPTCHA la formularul de înregistrare, utilizează hook-urile disponibile pentru formularul de înregistrare WordPress. Codul următor poate fi adăugat în fișierul functions.php al temei tale.

function custom_recaptcha_signup_form() {
    $site_key = 'YOUR_SITE_KEY'; // Înlocuiește cu cheia site-ului tău
    echo '<div class="g-recaptcha" data-sitekey="' . $site_key . '"></div>';
    echo '<script src="https://www.google. com/recaptcha/api.js" async defer></script>';
}
add_action('register_form', 'custom_recaptcha_signup_form');

function custom_recaptcha_signup_validation($errors, $sanitized_user_login, $user_email) {
    if (empty($_POST['g-recaptcha-response'])) {
        $errors->add('captcha_error', __('<strong>ERROR</strong>: Please confirm you are not a robot.', 'textdomain'));
    }

    $secret_key = 'YOUR_SECRET_KEY'; // Înlocuiește cu cheia secretă
    $response = isset($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : '';
    $remote_ip = $_SERVER['REMOTE_ADDR'];
    $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
    $recaptcha_response = wp_remote_post($recaptcha_url, array(
        'body' => array(
            'secret' => $secret_key,
            'response' => $response,
            'remoteip' => $remote_ip
        )
    ));
    $recaptcha_response_body = wp_remote_retrieve_body($recaptcha_response);
    $result = json_decode($recaptcha_response_body, true);

    if (!$result['success']) {
        $errors->add('captcha_error', __('<strong>ERROR</strong>: Captcha verification failed, please try again.', 'textdomain'));
    }

    return $errors;
}
add_filter('registration_errors', 'custom_recaptcha_signup_validation', 10, 3);

Pasul 3: Înlocuiește Cheile

  • Înlocuiește 'YOUR_SITE_KEY' cu cheia site-ului tău de la Google reCAPTCHA.
  • Înlocuiește 'YOUR_SECRET_KEY' cu cheia secretă de la Google reCAPTCHA.

Notă

Această implementare adaugă reCAPTCHA la formularul de înregistrare standard WordPress și validează inputul înainte de a finaliza înregistrarea. Asigură-te că testezți implementarea pentru a verifica funcționalitatea și pentru a te asigura că nu există probleme de compatibilitate cu tema sau plugin-urile instalate.


Reține că manipularea erorilor și localizarea mesajelor de eroare ('Please confirm you are not a robot.' și 'Captcha verification failed, please try again.') ar trebui ajustate conform nevoilor site-ului tău și localizate dacă site-ul tău suportă mai multe limbi.


Daca ai nevoie de ajutor deschide un TICHET

** Timpul este bazat pe fusul orar Europe/Bucharest