2012-11-21 58 views
4

後,我在WordPress的安裝,除其他事項外,允許用戶顯示變化從前端他們的電子郵件地址有一個自定義頁面。WordPress的wp_update_user只更新刷新

儘管如此,電子郵件在數據庫中得到正確更改,但在頁面上未更新,直到另一個刷新(帶或不帶$_POST)。這種行爲真的很奇怪,我找不到原因。

這裏是有問題的代碼部分:

if (!empty($_POST['user_email'])) 
    wp_update_user(array ('ID' => $queried_user->id, 'user_email' => esc_attr($_POST['user_email']))) ; 

如果我執行var_dump($_POST)var_dump($queried_user),我得到user_email正確地顯示在$_POST變量,但相應地,仍然是舊的$queried_user變量。但是,通過PHPMyAdmin查看數據庫,我可以看到數據已經更新。瀏覽器頁面再次刷新後,所有內容都能正確顯示。

任何指針?

+0

附:忘了提及:我更新了同一頁面中的許多其他參數,並且它們都在第一頁上正確刷新。不過,我應該提到,我通過使用'update_user_meta'來更新它們。由於'user_email'存儲在wp_users表中,這是我真正需要使用上述函數進行更新的唯一事情。 – Sunyatasattva

回答

3

不知道你是如何填充$ queried_user,但試試這個:

if (!empty($_POST['user_email'])) 
{ 
    $queried_user->user_email=$_POST['user_email']; 
    wp_update_user(array ('ID' => $queried_user->id, 'user_email' => esc_attr($queried_user->user_email))) ; 
} 
+0

我像'get_userdata(intval($ _ REQUEST ['id']))''那樣填充'$ queried_user'。 非常感謝你,它的作品像魅力。如果你不介意詳細說明,這項工作的基本原理是什麼? – Sunyatasattva

+0

當您執行wp_update_user時,您的$ queried_user變量不會自動奇蹟般地得到更新。您必須專門設置值,或使用get_userdata重新加載它。希望這是有道理的。很高興你工作。 – Gary

+1

Thanks @Gary,您的解決方案在幾個小時後幫助完成 – Greeso