Wordpress - wordpress redirect after password reset
The "correct" answer doesn't work here because the action 'password_reset' fires before the password is reset.
I modified the first answer, before the update, to work.
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');
Edit: Didn't have enough rep to comment so I'm posting this as a new answer.
Here is a simple solution. Im hooking into login_headerurl
. Maybe there is a better hook for this but it works, Put this in your functions.php:
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');
What it does, it runs on login_headerurl
and checks for the GET parameter "checkedmail" which you get after you submitted a valid username or email. Then i redirect by using the awsome function wp_redirect to the home_url.
UPDATE after comment
If you want to redirect the user after submitted a new password you only need to use the hook password_reset here is an example:
function wpse_lost_password_redirect() {
wp_redirect( home_url() );
exit;
}
add_action('after_password_reset', 'wpse_lost_password_redirect');
I can't see how the "UPDATE after comment" answer works.
The documentation for the 'password_reset' hook says "Fires before the user's password is reset.".
If you redirect, then exit the password won't get changed.
Since I had a similar need I developed my solution to the problem. We still respond to the "password_reset" hook but instead of performing the redirect immediately we add a hook for the "login_url" filter. And it's in this filter that we add the redirections to the home page after the user has logged in.
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 );
}