2012-11-21 26 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