Wordpress - 在用户注册时向数据库添加自定义字段

问题描述 投票:0回答:1

我在数据库中的wp_user表中创建了另一个列,我试图以不同的散列方式存储密码,以用作另一个应用程序的凭据

password_hash($password, PASSWORD_DEFAULT);

在散列之前,我应该在哪里添加代码以使用输入字段数据?

在用户注册之前添加此命令很重要,因为我需要使用用户输入字段中的原始密码

php wordpress hash login
1个回答
1
投票

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_postregister_errors过滤器之前操纵或处理来自用户注册的帖子数据 - 这取决于您也可以使用的场景。

所有这些额外功能都在user_register codex页面中链接。

编辑二

评论后:

我想我应该编辑register_form,究竟是哪个文件?

绝不永远不会编辑核心文件。

这是一个开发人员可以做的更糟糕的做法,原因很多,我甚至不能在这里开始列举。这正是制作钩子/过滤器的原因。

如果您已经知道,那么使用它们,如果您不知道 - 您可以阅读更多here

在这种情况下,钩子register_form完全用于操作表单,您可以在不触及核心文件的情况下更改表单。

编辑III

请检查函数:wp_hash_passwordwp_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);
            }
}
© www.soinside.com 2019 - 2024. All rights reserved.