为丢失的密码添加操作或修改wp-login.php?action=lostpassword

时间:2016-09-11 作者:Mohammed Sufian

到目前为止,我已经完成了在联系人页面、登录页面和前端有表单的页面上添加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.\');
            }
        } 
    }

1 个回复
最合适的回答,由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;

        } 

相关推荐

Wp_set_password()不起作用!

我创建了一个简单的表单,让我的用户可以更改他们的密码。但有一个问题,我很困惑!我尝试了很多次来更改密码,但我的密码不会被更改wp_set_password() 我真的不知道原因。<?php /* Template Name: user-edit-password */ ?> <?php $user = wp_get_current_user(); $userID = $user->ID; $has_error = false;&#