我创建了一个功能,可以让人们通过输入他们的注册电子邮件地址来通过电子邮件发送密码。但由于某些原因,如果用户数据库中未识别出电子邮件,wordpress不会发送任何电子邮件或显示任何错误:
function wp_user_password($user_id) {
function get_userdata($user_id) {
return get_user_by('email', $_REQUEST['email']);
}
$user = get_userdata($user_id);
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
$message = sprintf(__('Your registration details:'), $blogname)."\r\n\r\n";
$message. = sprintf(__('E-mail: %s'), $user - > user_email)."\r\n";
$message. = sprintf(__('Password: %s'), $plaintext_pass)."\r\n";
@wp_mail(get_option('admin_email'), sprintf(__('Requested Registration Details'), $blogname), $message);
if (empty($plaintext_pass)) return;
$message = sprintf(__('Username: %s'), $user - > user_login)."\r\n";
$message. = sprintf(__('Password: %s'), $plaintext_pass)."\r\n";
wp_mail($user - > user_email, sprintf(__('[%s] Your username and password'), $blogname), $message);
}
$this - > output(1, 'Email sent successfully');
如果您能帮助我修改上述代码,我将非常感激。非常感谢。
答案 0 :(得分:2)
您尝试在此处实现向用户发送现有密码的目标似乎是不可行的。
当用户注册并将其存储在数据库中时,Wordpress会为每个用户加密密码。加密是一种方式,因此密码永远无法恢复。
代码问题:
〜这里有$ user_id有什么用?
function get_userdata($user_id) {
return get_user_by('email', $_REQUEST['email']);
}
〜$ plaintext_pass未初始化,因此以下语句将始终为真
if (empty($plaintext_pass)) return;
如果您尝试创建忘记密码功能,则可以使用现有的wordpress功能。这可能是有用的WP_LOSTPASSWORD_URL