J'utilise le code suivant dans functions.php de vérifier la soumission du formulaire reCAPTCHA de GoogleWooCommerce vérification de formulaire d'inscription utilisateur reCAPTCHA de Google
function adv_validate_re_captcha_field($username, $email, $wpErrors)
{
$remoteIP = $_SERVER['REMOTE_ADDR'];
$recaptchaResponse = $_POST['g-recaptcha-response'];
$response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', [
'body' => [
'secret' => '#####################',
'response' => $recaptchaResponse,
'remoteip' => $remoteIP
]
]);
$response_code = wp_remote_retrieve_response_code($response);
$response_body = wp_remote_retrieve_body($response);
if ($response_code == 200)
{
$result = json_decode($response_body, true);
if (! $result['success'])
{
$wpErrors->add('recaptcha', __('Error message', 'woocommerce'));
}
}
}
add_action('woocommerce_register_post', 'adv_validate_re_captcha_field', 10, 3);
Il fonctionne très bien. Le problème est que je veux vérifier le formulaire uniquement sur l'une des pages où le formulaire est affiché. Par exemple, il est utilisé sur le WooCommerce/myaccount/form-login.php où le reCaptcha est affiché avec le code suivant:
<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="###"></div>
Je ne veux pas vérifier la forme sur une autre page.