2011-04-11 86 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