我的目标是向我的用户发送一封包含链接的电子邮件,该链接会将用户帐户直接转到密码重置页面,即用户输入新密码的页面。
我使用get_password_reset_key函数生成一个放在自定义URL中的密钥,但是,当我测试它时,我被重定向到密码重置页面时出现无效的密钥错误。
$resetpasskey = get_password_reset_key($row[1]);
$reseturl = "http://nameofmysite.co.uk/my-account/lost-password/?key=".$resetpasskey."&login=".$row[1];
wp_mail('dean@dean.co.uk','test key',$reseturl);
该键输出的值看起来像一个有效的重置键,标准长度为20个字符。
$Row[1]
是目标用户的用户名。
$Reseturl
是我电子邮件中的密码重置网址。
答案 0 :(得分:3)
我强烈怀疑它无效的原因是因为你输入了错误的参数。
如果查看get_password_reset_key()
的WordPress代码,您会发现它希望参数为WP_User
- 而不是用户名(代码注释来自下面的WP代码):
/**
* Creates, stores, then returns a password reset key for user.
*
* @since 4.4.0
*
* @global wpdb $wpdb WordPress database abstraction object.
* @global PasswordHash $wp_hasher Portable PHP password hashing framework.
*
* @param WP_User $user User to retrieve password reset key for.
*
* @return string|WP_Error Password reset key on success. WP_Error on error.
*/
function get_password_reset_key( $user ) {
因此,考虑到您共享的代码,您需要按照以下几行修改它:
// I'd recommend changing to use `$row['username']`, but that depends on how you get the data
$user = get_user_by( 'login', $row[1] );
$resetpasskey = get_password_reset_key( $user );