web-dev-qa-db-fra.com

add_action pour mot_de_passe perdu ou modificateur wp-login.php? action = motdepasse

Jusqu'à présent, j'ai terminé l'ajout de Google Recaptcha sur la page de contact, la page de connexion et les pages contenant des formulaires au recto: tout fonctionne parfaitement.

maintenant, il ne me reste plus qu'une page pour ajouter Google Recaptcha lorsque l’utilisateur clique sur la perte de votre mot de passe? lien, alors j'ai essayé d'ajouter:

add_action('lost_password', 'my_reset_password');

avec l'action ci-dessus ajoutée, je peux voir le captcha de Google dans le coin supérieur gauche de la page de génération d'un nouveau mot de passe, mais je le veux sous le champ du nom d'utilisateur et de l'adresse de messagerie.

et après cela, comment puis-je valider Google Recaptcha lorsque l'utilisateur clique sur le bouton Générer un nouveau mot de passe? Je suis nouveau sur Wordpress, aidez-moi s'il vous plaît. Merci d'avance.

J'utilise la dernière version de WordPress,

~ MISE À JOUR ~

(maintenant essayé le ci-dessous, mais ce n'est pas valider mon captcha, et envoyer l'e-mail avec le lien de réinitialisation)

    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.');
            }
        } 
    }
2
Mohammed Sufian

obtenu une solution de travail,

mais wordpress commence par valider le nom d'utilisateur ou l'adresse e-mail, puis ma validation a lieu.

J'ai utilisé le filtre allow_password_reset au lieu de l'action 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;

        } 
2
Mohammed Sufian