WP_UPDATE_USER不会更新,而UPDATE_USER_META会

时间:2013-03-24 作者:Tomas

我正在构建用户配置文件页面,用户可以在该页面的前端更新他们的配置文件。用户档案扩展了几个自定义字段,如“Twitter”、“Facebook”和“City”。

以下代码成功更新了除dCity:

$user_fields = array(
 \'ID\'           => $current_user->ID,
 \'nickname\'     => esc_attr($_POST[\'nickname\']),
 \'first_name\'   => esc_attr($_POST[\'first_name\']),
 \'last_name\'    => esc_attr($_POST[\'last_name\']),
 \'display_name\' => esc_attr($_POST[\'display_name\']),
 \'user_email\'   => esc_attr($_POST[\'email\']),
 \'user_url\'     => esc_attr($_POST[\'url\']),
 \'twitter\'      => esc_attr($_POST[\'twitter\']),
 \'facebook\'     => esc_attr($_POST[\'facebook\']),
 \'description\'  => esc_attr($_POST[\'description\']),
 \'dCity\'        => esc_attr($_POST[\'dCity\'])
);

wp_update_user($user_fields) ;
我试着用update_user_meta 要更新dCity 它成功了:

$user_fields = array(
 \'ID\'           => $current_user->ID,
 \'nickname\'     => esc_attr($_POST[\'nickname\']),
 \'first_name\'   => esc_attr($_POST[\'first_name\']),
 \'last_name\'    => esc_attr($_POST[\'last_name\']),
 \'display_name\' => esc_attr($_POST[\'display_name\']),
 \'user_email\'   => esc_attr($_POST[\'email\']),
 \'user_url\'     => esc_attr($_POST[\'url\']),
 \'twitter\'      => esc_attr($_POST[\'twitter\']),
 \'facebook\'     => esc_attr($_POST[\'facebook\']),
 \'description\'  => esc_attr($_POST[\'description\'])
);

wp_update_user($user_fields);
update_user_meta( $current_user->ID, \'dCity\', $_POST[\'dCity\'] );
所以问题解决了,但我想知道为什么wp_update_user 不更新所有记录?我做错什么了吗?

提前,谢谢。

1 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

wp\\u update\\u用户(&U);元数据

wp_update_user 更新用户表中的记录。它并不是要更新usermeta表中的自定义元数据。

因此,您的“问题”实际上是预期的行为。

这个$userdata 参数传递给wp_update_user 可以包含以下字段:

ID、user\\u pass、user\\u login、user\\u nicename、user\\u url、user\\u email、display\\u name、昵称、first\\u name、last\\u name、description、rich\\u editing、user\\u registered、role、show\\u admin\\u bar\\u front

此外,它还接受被识别为“联系人方法”的元数据。它将保存到usermeta表中。

默认情况下,它们是jabber、aimyim

但是,可以通过\'user_contactmethods\' 滤器至于评论中提出的问题,这可能是推特和;facebook元数据已通过wp_update_user.

应使用适当的功能保存任何其他元数据。

核心是如何发生的

这只是一个旁白:

wp_update_user 呼叫_get_additional_user_keys 依次调用_wp_get_user_contactmethods. 生成的元键在wp_update_user 如果存在值,则通过update_user_meta.

有关参考,请参见Line 1426 and after (as of 3.5.1) of /wp-includes/user.php

结束

相关推荐