Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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>
share|improve this question
    
So anyone could reset anyone's password? –  Stephen Harris Sep 4 '12 at 23:49
    
lol doh Im gonna edit this –  Pollux Khafra Sep 5 '12 at 0:04
add comment

1 Answer 1

up vote 0 down vote accepted

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>

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' );
share|improve this answer
    
Is this sending a link with a unique key to the email entered if it's a valid email address of a user? I'm trying to replicate the default method wordpress uses only the link they get sent is pointed to my reset password template and not wordpress's. –  Pollux Khafra Sep 6 '12 at 22:12
    
Have you filtered the login_url to point to your reset template? If so, you'll have to capture the original login_url value in your filter so you can use it instead of the call to wp_lostpassword_url() –  marfarma Sep 6 '12 at 22:16
    
or alternately remove your filter before the form code, and restore it afterwards. Probably easier that way. –  marfarma Sep 6 '12 at 22:18
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.