Antworten:
Hier ist eine einfache Lösung. Ich bin dabei login_headerurl
. Vielleicht gibt es einen besseren Haken dafür, aber es funktioniert. Fügen Sie dies in Ihre 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 es weiter 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 gesendet haben. Dann leite ich mit der awsome-Funktion wp_redirect zur home_url um .
UPDATE nach Kommentar
Wenn Sie den Benutzer nach dem Senden eines neuen Passworts umleiten möchten, müssen Sie nur den Hook 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');
password_reset
Aktion ausgeführt wird, bevor das eigentliche Zurücksetzen des Kennworts durchgeführt wird. Dokumentation sagtFires before the user's password is reset.
exit
da diese Aktion ausgeführt wird, bevor das Kennwort zurückgesetzt wird.
Die "richtige" Antwort funktioniert hier nicht, da die Aktion 'password_reset' ausgelöst wird, 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, daher poste ich dies als neue Antwort.
Ich kann nicht sehen, wie die Antwort "UPDATE nach Kommentar" funktioniert.
In der Dokumentation zum Hook 'password_reset' heißt es: "Wird ausgelöst, bevor das Kennwort des Benutzers zurückgesetzt wird."
Wenn Sie umleiten, wird das Beenden des Kennworts nicht geändert.
Da ich einen ähnlichen Bedarf hatte, entwickelte ich meine 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. 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 );
}
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
lostpassword_redirect
ist der Filter für eine URL, zu der der Benutzer gehen wird, nachdem er auf die Forgot Password
Schaltfläche geklickt hat. Dann setzt er sein Passwort tatsächlich zurück und wenn das neue Passwort festgelegt ist, benötigt das OP einen Filter- / Aktions-Hook (was wahrscheinlich ist after_password_reset
)
Rediret to ist eine WordPress-Funktion, für die Sie kein Plugin erstellen müssen. Fügen Sie einfach & redirect_to = die URL hinzu, und es funktioniert. Beispiel:
echo '<a href="'home_url().'/wp-login.php?action=lostpassword&redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Forgot Password">'Forgot Password'</a>';