The question:
I’ve been struggling searching through a bunch of tutorials with no luck. I have a custom login page and am just replacing the login form with the forgot password form on click. My issue is how to get the form to send the user a reset password link if the correct username or email is entered and return an error if not. I’m trying to do this from a plugin I’m making to handle the login. Here’s my simple form. How do I make this work?
<form id="wp_pass_reset" action="" method="post">
<input type="text" id="email-field" name="user_input" value="Username or Email" /><br />
<input type="submit" id="submitbtn" name="submit" value="Reset" />
</form>
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
In your plugin you would first set the redirect URL either to nothing: $redirect='';
or the fully qualified URL of the page you want your user to land on after successfully changing their password. For http://example.com/mypage/ you would use: $redirect=site_url( '/mypage/ ' );
Then your form would be:
<form name="lostpasswordform" id="lostpasswordform" action="<?php echo wp_lostpassword_url(); ?>" method="post">
<p>
<label>Username or E-mail:<br>
<input type="text" name="user_login" id="user_login" class="input" value="" size="20" tabindex="10"></label>
</p>
<input type="hidden" name="redirect_to" value="<?php echo $redirect ?>">
<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="Get New Password" tabindex="100"></p>
</form>
Note: This code is untested. Let me know what happens in the comments if something doesn’t work.
Update
As noted in the comments, if you have a filter on login_url wp_lostpassword_url()
will point to your custom page. To temporarily restore the default login_url, remove the filter right before the form code:
remove_filter( 'login_url', 'your_filter_function' );
and add it back right after the form code:
add_filter( 'login_url', 'your_filter_function' );
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0