我有一个包含来自另一个项目的用户信息的数据库。现在我想将此用户数据与我的新 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 之前将我的散列添加到纯文本密码中。
如何解决这个问题?