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".
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');
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');
Î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 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.
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).
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);
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