it-swarm.com.de

wordPress-Weiterleitung nach dem Zurücksetzen des Passworts

Ich möchte nach dem Zurücksetzen des Passworts zu get_bloginfo('url'); umleiten können.

Aber ich kann für mein Leben keine einfache Antwort oder Funktion finden, um dies zu tun.

Weiß jemand, ob das möglich ist?

Vielen Josh

7
Joshc

Hier ist eine einfache Lösung. Ich hänge an login_headerurl. Vielleicht gibt es dafür einen besseren Hook, aber es funktioniert. Gib das in deine functions.php ein:

function wpse_lost_password_redirect() {

    // Check if have submitted 
    $confirm = ( isset($_GET['checkemail'] ) ? $_GET['checkemail'] : '' );

    if( $confirm ) {
        wp_redirect( home_url() ); 
        exit;
    }
}
add_action('login_headerurl', 'wpse_lost_password_redirect');

Was es tut, läuft auf login_headerurl und prüft auf den GET-Parameter "checkedmail", den Sie erhalten, nachdem Sie einen gültigen Benutzernamen oder eine gültige E-Mail-Adresse eingegeben haben. Dann leite ich mit der awsome-Funktion wp_redirect zu home_url um.

UPDATE nach Kommentar

Wenn Sie den Benutzer nach der Übermittlung eines neuen Passworts umleiten möchten, müssen Sie nur den Haken password_reset verwenden. Hier ein Beispiel:

function wpse_lost_password_redirect() {
    wp_redirect( home_url() ); 
    exit;
}
add_action('after_password_reset', 'wpse_lost_password_redirect');
7

Die "richtige" Antwort funktioniert hier nicht, weil die Aktion "password_reset" bevor das Passwort zurückgesetzt wird.

Ich habe die erste Antwort vor dem Update so geändert, dass sie funktioniert.

function wpse_lost_password_redirect() {

    // Check if have submitted
    $confirm = ( isset($_GET['action'] ) && $_GET['action'] == resetpass );

    if( $confirm ) {
        wp_redirect( home_url() );
        exit;
    }
}
add_action('login_headerurl', 'wpse_lost_password_redirect');

Bearbeiten: Ich hatte nicht genug Repräsentanten, um einen Kommentar abzugeben. Ich poste dies als neue Antwort.

9
r00tAcc3ss

Ich kann nicht sehen, wie die Antwort "UPDATE after comment" funktioniert.

In der Dokumentation für den Hook 'password_reset' heißt es "Wird ausgelöst, bevor das Kennwort des Benutzers zurückgesetzt wird.".
Wenn Sie umleiten, wird das Kennwort beim Beenden nicht geändert.

Da ich einen ähnlichen Bedarf hatte, entwickelte ich eine Lösung für das Problem. Wir antworten immer noch auf den Hook "password_reset", aber anstatt die Umleitung sofort durchzuführen, fügen wir einen Hook für den Filter "login_url" hinzu. Und in diesem Filter fügen wir die Weiterleitungen zur Startseite hinzu, nachdem sich der Benutzer angemeldet hat.

 add_action( "password_reset", "rngs_password_reset", 10, 2 );

/**
 * Implement "password_reset" for RNGS
 *
 * After a password reset has been performed we want the Log in link to redirect the user to the home url.
 * When we see this action being run we know that we should be filtering "login_url" to add the redirect the home page.
 * We don't filter "login_url" any other time. 
 *
 * @param WP_User $user - the user object
 * @param string $new_pass - the new password
 *  
 */
function rngs_password_reset( $user, $new_pass ) {
  add_filter( "login_url", "rngs_login_url", 10, 2 );
}

/**
 *  Implement "login_url" filter for RNGS
 *
 * Redirect the user to the home page after logging in
 *
 * @TODO - make this an option field that controls where the logged in user goes
 * @TODO - dependent upon role?
 * 
 * @param string $login_url - the original login_url which is not expected to include "redirect_to" or "reauth"
 * @param string $redirect - expected to be null/blank
 */
function rngs_login_url( $login_url, $redirect ) {
  $home_redirect = home_url();
  $login_url = add_query_arg('redirect_to', urlencode( $home_redirect ), $login_url);
  return( $login_url );
} 
2
bobbingwide

Vielleicht fehlt mir etwas in der Frage, aber stimmt etwas mit der Verwendung des lostpassword_redirect-Filters nicht?

add_filter( 'lostpassword_redirect', 'my_redirect_home' );

function my_redirect_home( $lostpassword_redirect ) {
    return home_url();
}

Mehr hier: https://codex.wordpress.org/Plugin_API/Filter_Reference/lostpassword_redirect

0
rsigg