将重置密码链接从自定义丢失密码表单发送到用户

时间:2012-09-04 作者:Pollux Khafra

我一直在努力搜索一大堆教程,但运气不好。我有一个自定义的登录页面,只需单击一下,将登录表单替换为忘记密码表单。我的问题是,如果输入了正确的用户名或电子邮件,如何让表单向用户发送重置密码链接,如果输入不正确,则返回错误。我正在尝试通过一个插件来处理登录。这是我的简单表格。我该怎么做?

  <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>

1 个回复
最合适的回答,由SO网友:marfarma 整理而成

在插件中,首先将重定向URL设置为nothing:$redirect=\'\'; 或您希望用户在成功更改密码后登录的页面的完全限定URL。对于http://example.com/mypage/ 您可以使用:$redirect=site_url( \'/mypage/ \' );

那么您的表格将是:

<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>
注意:此代码未经测试。如果有些东西不起作用,请让我知道评论中会发生什么。

Update

如注释中所述,如果登录url上有筛选器wp_lostpassword_url() 将指向您的自定义页面。要临时还原默认登录url,请在表单代码之前删除筛选器:

remove_filter( \'login_url\', \'your_filter_function\' );
并将其添加回表单代码之后:

add_filter( \'login_url\', \'your_filter_function\' );

结束