我有一个包含来自另一个项目的用户信息的数据库。现在我想将这个用户数据与我的新wordpress安装相关联。我想,如果用户即将登录并且还没有Wordpress配置文件,但配置文件已经在其他数据库中,那么wordpress需要根据数据创建配置文件,该配置文件已存在于其他数据库中。
我已经完成了登录,它运行正常...
add_filter('authenticate', 'check_login', 40, 3);
function check_login($user, $username, $password) {
$user = get_user_by( 'login', $username );
$hash = kbHash($password);
if ( $user ) {
if (!wp_check_password( $hash, $user->data->user_pass, $user->ID) ) {
$user = NULL;
}
} elseif ($kbCredentials = isKanuboxUser($username)) {
if ($kbCredentials['hash'] == $hash)) {
$user_id = wp_create_user( $kbCredentials['username'], $kbCredentials['hash'], $kbCredentials['mail'] );
$user = get_userdata( $user_id );
} else {
$user = NULL;
}
} else {
$user = NULL;
}
return $user;
}
function kbHash($password) {
//TODO: additional hashing from other project
$hash = $password;
return $hash;
}
现在,问题是,如果某些用户编辑了他的密码,我也需要进行散列并在原始数据库中更新它。在wordpress中是否有合适的钩子?
我只发现了这个:add_action( 'profile_update', 'some_function' );
但在该函数中,我无法在应用wp-hashing之前将哈希值添加到纯文本密码中。
如何解决这个问题?