2011-04-11 56 views
1

这里的情况: 我有一个旧的网站,旧的用户数据库(MySQL)。我想将这些用户迁移到WordPress,而不会丢失旧数据(配方ID,自定义用户字段等)。自定义usermeta字段,注册页面和登录窗口小部件wordpress

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

我试图找到一些插件(WP-成员,注册小工具,注册加Redux等),但他们都不符合我的目的。

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

有没有人有这个问题的解决方案?

Thx,Rick

+0

为什么不加注册Redux为你的目的工作? – Ciaran 2011-04-11 15:17:09

回答

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。

编辑:我错过了你的自定义字段需要,重力形式做到这一点非常好,但你可以自定义字段与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"); 
+0

只要您以这种方式将数据添加到WordPress,您就可以随时更新。 – nullvariable 2011-04-11 18:59:15