Don't stomp meta fields in wp_update_user(). Props scribu. see #15458
git-svn-id: http://svn.automattic.com/wordpress/trunk@18909 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
653a6c1108
commit
8f50fdf79a
|
@ -474,6 +474,7 @@ class WP_User {
|
||||||
*
|
*
|
||||||
* @param string $field The field to query against: 'id', 'slug', 'email' or 'login'
|
* @param string $field The field to query against: 'id', 'slug', 'email' or 'login'
|
||||||
* @param string|int $value The field value
|
* @param string|int $value The field value
|
||||||
|
* @return object Raw user object
|
||||||
*/
|
*/
|
||||||
static function get_data_by( $field, $value ) {
|
static function get_data_by( $field, $value ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
@ -618,10 +619,10 @@ class WP_User {
|
||||||
* property matching the 'cap_key' exists and is an array. If so, it will be
|
* property matching the 'cap_key' exists and is an array. If so, it will be
|
||||||
* used.
|
* used.
|
||||||
*
|
*
|
||||||
|
* @access protected
|
||||||
* @since 2.1.0
|
* @since 2.1.0
|
||||||
*
|
*
|
||||||
* @param string $cap_key Optional capability key
|
* @param string $cap_key Optional capability key
|
||||||
* @access protected
|
|
||||||
*/
|
*/
|
||||||
function _init_caps( $cap_key = '' ) {
|
function _init_caps( $cap_key = '' ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
|
@ -1354,23 +1354,10 @@ function wp_insert_user($userdata) {
|
||||||
$user_id = (int) $wpdb->insert_id;
|
$user_id = (int) $wpdb->insert_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
update_user_meta( $user_id, 'first_name', $first_name );
|
$user = new WP_User( $user_id );
|
||||||
update_user_meta( $user_id, 'last_name', $last_name );
|
|
||||||
update_user_meta( $user_id, 'nickname', $nickname );
|
|
||||||
update_user_meta( $user_id, 'description', $description );
|
|
||||||
update_user_meta( $user_id, 'rich_editing', $rich_editing );
|
|
||||||
update_user_meta( $user_id, 'comment_shortcuts', $comment_shortcuts );
|
|
||||||
update_user_meta( $user_id, 'admin_color', $admin_color );
|
|
||||||
update_user_meta( $user_id, 'use_ssl', $use_ssl );
|
|
||||||
update_user_meta( $user_id, 'show_admin_bar_front', $show_admin_bar_front );
|
|
||||||
|
|
||||||
$user = new WP_User($user_id);
|
foreach ( _get_additional_user_keys( $user ) as $key ) {
|
||||||
|
update_user_meta( $user_id, $key, $$key );
|
||||||
foreach ( _wp_get_user_contactmethods( $user ) as $method => $name ) {
|
|
||||||
if ( empty($$method) )
|
|
||||||
$$method = '';
|
|
||||||
|
|
||||||
update_user_meta( $user_id, $method, $$method );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset($role) )
|
if ( isset($role) )
|
||||||
|
@ -1412,10 +1399,17 @@ function wp_update_user($userdata) {
|
||||||
$ID = (int) $userdata['ID'];
|
$ID = (int) $userdata['ID'];
|
||||||
|
|
||||||
// First, get all of the original fields
|
// First, get all of the original fields
|
||||||
$user = WP_User::get_data_by('id', $ID);
|
$user_obj = get_userdata( $ID );
|
||||||
|
|
||||||
|
$user = get_object_vars( $user_obj->data );
|
||||||
|
|
||||||
|
// Add additional custom fields
|
||||||
|
foreach ( _get_additional_user_keys( $user_obj ) as $key ) {
|
||||||
|
$user[ $key ] = get_user_meta( $ID, $key, true );
|
||||||
|
}
|
||||||
|
|
||||||
// Escape data pulled from DB.
|
// Escape data pulled from DB.
|
||||||
$user = add_magic_quotes(get_object_vars($user));
|
$user = add_magic_quotes( $user );
|
||||||
|
|
||||||
// If password is changing, hash it now.
|
// If password is changing, hash it now.
|
||||||
if ( ! empty($userdata['user_pass']) ) {
|
if ( ! empty($userdata['user_pass']) ) {
|
||||||
|
@ -1465,6 +1459,20 @@ function wp_create_user($username, $password, $email = '') {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a list of meta keys that wp_insert_user() is supposed to set.
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @since 3.3.0
|
||||||
|
*
|
||||||
|
* @param object $user WP_User instance
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function _get_additional_user_keys( $user ) {
|
||||||
|
$keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front' );
|
||||||
|
return array_merge( $keys, array_keys( _wp_get_user_contactmethods( $user ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set up the default contact methods
|
* Set up the default contact methods
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue