请帮助在 worpdress 中捕获 recatcha v3 分数。
我的分数低于对象,但如何从该对象中获取
$submission = WPCF7_Submission::get_instance();
WPCF7_Submission Object
(
[pocket:protected] => Array
(
[recaptcha] => Array
(
[version] => 3.0
[threshold] => 0.5
[response] => Array
(
[success] => 1
[challenge_ts] => 2023-06-22T10:30:41Z
[hostname] => staging.bonoboz.in
[score] => 0.9
[action] => contactform
)
)
)
)
WPCF7_Submission 对象包含通过表单提交的数据。 recaptcha 数组包含 reCAPTCHA 数据,其中的响应数组包含分数字段。
您可以像这样访问此分数:
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$recaptcha = $submission->get_meta('recaptcha');
if ($recaptcha) {
$score = $recaptcha['response']['score'];
// do something with $score
}
}
在此代码中,
$submission->get_meta('recaptcha')
从提交中检索验证码数据。然后,$recaptcha['response']['score']
从 reCAPTCHA 响应中检索分数。现在,$score
包含 reCAPTCHA v3 分数。
请注意,此示例假设您使用的是 Contact Form 7 插件,并且启用了 reCAPTCHA 模块并正确配置为使用 reCAPTCHA v3。此外,此代码应放置在表单提交后将执行的适当位置,例如表单提交挂钩或自定义表单处理代码。
联系表 7(至少截至 2024 年 1 月)将最后的验证码分数存储在可通过公共 getter 函数访问的私有变量中。所以我很幸运采用了以下方法:
$recaptcha_service = WPCF7_RECAPTCHA::get_instance();
$score = $recaptcha_service->get_last_score();
仅供参考,在我的案例中,这是从
wpcf7_before_send_mail
操作运行的。