[英]Wordpress when password updated user is logout
我在前端和即时通讯使用wp_user_update函数更改了密码,但是当用户更改密码时,它已经注销。 问题是我的旧Cookie没有更新,所以如何在不注销的情况下更新密码。有任何想法吗?
global $wpdb, $current_user;
$user_id = $current_user->ID;
wp_update_user(array('ID'=>$user_id,'user_pass'=>$_POST['user_pass']));
WordPress支持人员Aaron Forgue的答案已有 3年历史,但可能很有趣。 我必须更改$wpdb->query()
使其起作用:
global $wpdb;
$profile_id = $_POST['prof_id'];
$username = $_POST['log_name'];
$password = $_POST['wachtwoord'];
$md5password = wp_hash_password($password);
// You may want to use $wpdb->prepare() here. As it stands, malicous code could be passed in via $_POST['prof_id'] or $_POST['log_name']
$wpdb->query( $wpdb->prepare(
"
UPDATE $wpdb->users SET user_pass = %s WHERE ID = %d
",
$md5password,
$profile_id
) );
// Here is the magic:
wp_cache_delete($profile_id, 'users');
wp_cache_delete($username, 'userlogins'); // This might be an issue for how you are doing it. Presumably you'd need to run this for the ORIGINAL user login name, not the new one.
wp_logout();
wp_signon(array('user_login' => $username, 'user_password' => $password));
对于上述技巧,请使用该插件: http : //wordpress.org/extend/plugins/change-password-e-mail/
如Robahas所述 ,请确保在发送标头之前运行此代码,否则wp_signon()
将不起作用,并且无论如何用户都将注销。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.