我在数据库中的wp_user
表中创建了另一个列,我试图以不同的散列方式存储密码,以用作另一个应用程序的凭据
password_hash($password, PASSWORD_DEFAULT);
在散列之前,我应该在哪里添加代码以使用输入字段数据?
在用户注册之前添加此命令很重要,因为我需要使用用户输入字段中的原始密码
wordpress有一个名为user_register
的动作钩子,在用户插入db后立即触发。
来自codex的例子
add_action( 'user_register', 'myplugin_registration_save', 10, 1 );
和你的功能
function myplugin_registration_save( $user_id ) {
if ( isset( $_POST['first_name'] ) )
update_user_meta($user_id, 'first_name', $_POST['first_name']);
}
编辑我
评论之后:首先 - 您可以使用其他方法在任何您喜欢的位置散列或更改密码 - 但我不会进入,所以如果您需要一些早期的操作,您可以使用register_form来操作表单本身,或者您可以使用register_post在register_errors过滤器之前操纵或处理来自用户注册的帖子数据 - 这取决于您也可以使用的场景。
所有这些额外功能都在user_register
codex页面中链接。
编辑二
评论后:
我想我应该编辑register_form,究竟是哪个文件?
绝不永远不会编辑核心文件。
这是一个开发人员可以做的更糟糕的做法,原因很多,我甚至不能在这里开始列举。这正是制作钩子/过滤器的原因。
如果您已经知道,那么使用它们,如果您不知道 - 您可以阅读更多here。
在这种情况下,钩子register_form
完全用于操作表单,您可以在不触及核心文件的情况下更改表单。
编辑III
请检查函数:wp_hash_password和wp_set_password,它允许更改默认的散列算法。
if ( !function_exists('wp_hash_password') ){
function wp_hash_password($password) {
//your own hashing algorithm here
return $password;
} }
如果你这样做,你还需要改变wp_check_password
if ( !function_exists('wp_check_password') ){
function wp_check_password($password, $hash, $user_id = '') {
// do you hash checking
return apply_filters('check_password', $check, $password, $hash, $user_id);
}
}