到目前为止,我已经完成了在联系人页面、登录页面和前端有表单的页面上添加google recaptcha,所有这些都像预期的那样工作得很好。
现在我只剩下一个页面来添加google recaptcha,也就是当用户点击丢失密码时?链接,所以我尝试添加:
add_action(\'lost_password\', \'my_reset_password\');
添加了上述操作后,我可以在“生成新密码”页面的左上角看到谷歌验证码,但我希望它位于用户名和电子邮件字段下方。
之后,当用户单击“生成新密码”按钮时,我如何验证google recaptcha。我是wordpress的新手,请帮忙。提前谢谢。
我正在使用最新的WordPress版本,
~更新~
(现在尝试了以下操作,但未验证我的验证码,并发送带有重置链接的电子邮件)
add_action(\'lostpassword_form\', \'my_reset_password_field\');
function my_reset_password_field() {
?>
<script src=\'https://www.google.com/recaptcha/api.js\'></script>
<p>
<label for="google-captcha">Verify, you are human?</label>
<div style="overflow: hidden" class="g-recaptcha" data-sitekey="asdaasdasdasdasdasdasdasdasd"></div>
</p>
<br>
<?php
}
add_action(\'lostpassword_post\', \'validate_lost_password\');
function validate_lost_password() {
if (isset($_POST[\'g-recaptcha-response\'])) {
$array = array(\'response\' => $_POST[\'g-recaptcha-response\'], \'userip\' => $_SERVER[\'REMOTE_ADDR\'],
\'secret\' => \'456456gdfgdfgertegdfgdfg\');
$result = gcaptcha($array);
if (!$result) {
global $errors;
$errors->add(\'invalid\', \'<strong>ERROR</strong>: Verification Failed.\');
}
}
}
最合适的回答,由SO网友:Mohammed Sufian 整理而成
找到了有效的解决方案,
但是wordpress首先验证用户名或电子邮件地址,然后进行验证。。
我用过allow_password_reset 筛选而不是lostpassword_post 措施:
add_filter( \'allow_password_reset\', \'my_password_reset_helper\' );
function my_password_reset_helper($true)
{
if (isset($_POST[\'g-recaptcha-response\'])) {
$array = array(\'response\' => $_POST[\'g-recaptcha-response\'],
\'userip\' => $_SERVER[\'REMOTE_ADDR\'],
\'secret\' => \'asddfer345gfdg4veg45y34635345\');
$result = gcaptcha($array);
if (!$result) {
return new WP_Error(\'denied\',
\'<strong>ERROR</strong>: Verification Failed.\');
}
return $true;
}
return $true;
}