自定义usermeta字段,注册页面和登录小部件wordpress

时间:2011-04-11 15:06:29

标签: wordpress registration

情况如下: 我有一个旧网站,有一个旧的用户数据库(MySQL)。我想将这些用户迁移到wordpress而不会丢失旧数据(配方ID,自定义用户字段等)。

除此之外,我想制作一个自定义注册页面,其中包含旧网站上已有的所有(额外)用户数据。

我试图找到一些插件(WP-members,Registration Widget,Register Plus Redux等),但它们都不符合我的目的。

我开始认为我可能需要自己编写代码,但这会让Wordpress无法更新。

有没有人能解决这个问题?

Thx,Rick

1 个答案:

答案 0 :(得分:1)

虽然您可能需要为用户分配新密码,但应该相当容易。只要用户知道它即将到来,通常情况下这是好的。

使用旧数据库和简单的SQL查询来提取数据,然后使用以下代码为旧数据库中的每个用户创建一个新用户:

$newuser = array(
            'user_pass' => wp_generate_password( 12,0 ),
            'user_login' => $email,
            'user_nicename' => $name['first'].' '.$name['last'],
            'user_email' => $email,
            'display_name' => $name['first'].' '.$name['last'],
            'nickname' => $name['first'].' '.$name['last'],
            'first_name' => $name['first'],
            'last_name' => $name['last'],
            //''
        );

        $user_id = wp_insert_user($newuser);
        wp_new_user_notification($user_id, $newuser['user_pass']);

此代码适用于WordPress 3.1。在这个例子中,您只想将$ name变量替换为您从旧数据库中提供的数据。

最后两行非常重要,因为这是真正的工作发生的地方。 wp_insert_user函数将创建用户(如果您缺少信息则抛出错误),wp_new_user_notification函数将向他们发送带有密码的电子邮件。我强烈建议花时间重写新的用户通知插件(它是pluggable function,这样您就可以将其粘贴到您的functions.php并在那里进行更改)以便电子邮件用户有道理。您也可以编写自己的电子邮件功能,或者如果您的密码以纯文本形式存储,只需将该信息传递给WP。

编辑:我错过了您对自定义字段的需求,Gravity Forms可以很好地完成此操作,但您可以为具有update_user_meta功能的任何用户添加自定义字段。因此,在上面的示例代码中,您只需要在之后添加内容:

update_user_meta($user_id, "my_custom_data_key", "my_custom_data_value");

要检索要显示的数据,您只需使用get_user_meta:

print get_user_meta($user_id, "my_custom_data_key");
相关问题