在本系列的前两个教程中,我们构建了用于登录和注册新用户的自定义页面。现在,登录流程中只剩下一个部分需要探索和替换:如果用户忘记密码并想要重置wordpress密码,会发生什么?
在本教程中,我们将解决最后一步并完成我们在整个系列中构建的个性化登录插件。
WordPress中的密码重置功能或多或少遵循当今网站上的标准方法:
- 用户通过输入用户名或电子邮件地址并请求WordPress重置密码来启动重置。
- 创建临时密码重置令牌并将其存储在用户数据中。包含此令牌的链接将发送到用户的电子邮件地址。
- 用户点击链接。
- 在重置密码页面上,令牌会经过验证,如果它与用户的数据匹配,他们就可以选择一个新密码。
就像登录和新用户注册一样,此功能是通过wp-login.php处理的。因此,我们如何自定义此流程的总体思路现在大部分都是以前的教程所熟悉的。
如果您尚未阅读前两个教程,最好从第1部分开始并按顺序浏览该系列。您可以按照教程自行编写代码,也可以从链接的GitHub存储库下载完整的源代码。
现在,让我们开始替换流程中的第一个屏幕。
启动WordPress重置密码
当用户到达您的登录页面但不记得他们在该网站上使用的密码时,就会开始重置WP密码。
为此,我们在本系列第一部分的登录表单底部放置了一个忘记密码?消息模板链接。默认情况下,在WordPress支持的网站上,此链接指向wp-login.php?action=lostpassword,页面如下所示:
要将此页面替换为自定义页面,我们将创建一个函数来将用户重定向到我们的自定义页面,并将该函数挂钩到WordPress操作。
在这种情况下,我们有两个选项可供选择:我们可以使用操作lost_password,该操作在页面渲染之前调用,或者我们在之前的教程中使用的操作:login_form_{action},这次是login_form_lostpassword。
我们可以采取两种方法,但为了限制执行的不必要代码的数量,让我们选择后一个选项。
但首先,让我们创建新的WordPress自定义密码重置页面:
第1步:创建重置密码页面p>
正如您所记得的,在第1部分中,我们使用plugin_activated回调函数创建了一个在插件激活时创建WordPress页面的函数。
在此函数中,将新页面的定义添加到$page_definitions数组的末尾。在WordPress密码重置流程中,我们还需要第二个页面来选择新密码。因此,为了节省时间,我们现在还添加第二页。
为了清楚起见,这是整个数组(添加了最后两个页面定义):