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>
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.
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.
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' );