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>
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
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