it-swarm.com.de

Problem beim Zurücksetzen des Passwortformulars anpassen

Ich möchte mein eigenes Formular und meine eigene Seite zum Zurücksetzen des Passworts erstellen. Ich meine diese Seite:  enter image description here 
Ich habe bereits eine Seitenvorlage für das Formular zum Zurücksetzen des Passworts erstellt, den Code:

<?php
/*
 * Template Name: Page - Reset Password
 */
if( !is_user_logged_in() ) {
    wp_redirect( site_url( 'login' ) );
}
get_header();
?>

<div id="content" class="content-area" role="main">
    <div class="forms-wrapper">
        <div class="form-reset-password-wrapper">
            <h1>Reset your password</h1>
            <form id="form-reset-password" name="resetpassform" class="form-reset-password" action="<?php echo site_url( '/wp-login.php?action=resetpass', 'https' ); ?>" method="post" autocomplete="off">
                <input type="hidden" id="user_login" value="<?php echo $_GET['login']; ?>" autocomplete="off">
                <p class="form-row">
                    <label for="user_pass">New password
                    <input type="password" name="user_pass" id="user_pass">
                </p>
                <p class="form-row">
                    <label for="user_pass_confirm">Confirm new password
                    <input type="password" name="user_pass_confirm" id="user_pass_confirm">
                </p>
                <p class="reset-password-submit">
                    <input type="submit" id="reset-password-btn" class="reset-password-btn" value="Submit"/>
                </p>
                <div class="form-reset-password-errors"></div>
            </form>
        </div>
    </div>
</div>

<?php get_footer(); ?>

So sieht es aus:
 enter image description here 

Beim Absenden eines Formulars starte ich eine Funktion mit Ajax, um diese Passwörter zu validieren und zu ändern, wenn alles gut läuft.

Wie kommen die Leute auf diese Seite? im Grunde gibt es das ein Passwort über das E-Mail-Adressformular zurücksetzen lassen, das so aussieht:
 enter image description here 

Nachdem die E-Mail empfangen wurde, kann der Benutzer auf einen Link klicken, der ungefähr so ​​aussieht:

https://example.com/wp-login.php?action=rp&key=tkFUnvcJmhu30nRxqjpt&login=example%gmail.com

In den Funktionen PHP habe ich diese Funktion verwendet, um Benutzer mit den Variablen $_GET zu meiner benutzerdefinierten Seite umzuleiten, aber es funktioniert nicht. Ich benötige Ihre Hilfe, bitte! Hier ist der Code:

/*
 * Redirect to custom reset password page
 */
function override_reset_password_form_redirect() {
    $action = isset( $_GET['action'] ) ? $_GET['action'] : '';
    $key = isset( $_GET['key'] ) ? $_GET['key'] : '';
    $login = isset( $_GET['login'] ) ? $_GET['login'] : '';

    if ( 'wp-login.php' === $GLOBALS['pagenow'] && ( 'rp' == $action  || 'resetpass' == $action ) ) {
        wp_redirect( site_url( '/reset-password/' ) . '?key=' . $key . '&login=' . $login );
        exit;
    }
}
add_action( 'init', 'override_reset_password_form_redirect' );
1
odedta

Sie können Ihrem functions.php Folgendes hinzufügen, um das zu erreichen, wonach Sie suchen. Die Aktion init scheint nicht rechtzeitig für das, wonach Sie suchen, ausgelöst zu werden.

if($_GET['action']==='rp' && strpos($_SERVER['REQUEST_URI'],'wp-login.php')) {
    $key = isset( $_GET['key'] ) ? $_GET['key'] : '';
    $login = isset( $_GET['login'] ) ? $_GET['login'] : '';
    wp_redirect( site_url( '/reset-password/' ) . '?key=' . $key . '&login=' . $login );
    exit;
}
2
Liam Stewart