How to update user metafile for multiple meta_key in wordpress

I am trying to update multiple meta_key for a user in WordPress

update_user_meta( $user_id, array( 'nickname' => $userFirstName, 'first_name' => $userFirstName, 'last_name' => $userLastName , 'city' => $userCityID , 'gender' => $userGenderID) ); 

but it does not work. How can we update multiple meta_key for a user?

+5
source share
2 answers

Try:

 <?php $user_id = 1234; $metas = array( 'nickname' => $userFirstName, 'first_name' => $userFirstName, 'last_name' => $userLastName , 'city' => $userCityID , 'gender' => $userGenderID ); foreach($metas as $key => $value) { update_user_meta( $user_id, $key, $value ); } 

Therefore, instead of passing your array update_user_meta , which takes only string arguments for $meta_key , $meta_key over the array and calls update_user_meta for each key / value pair in the array.

EDIT:

WordPress does not provide an integrated way to update multiple metas simultaneously. Part of the reason for using the built-in function is that filters and hooks can be registered to work with meta-information. They will not be called if you update them directly.

However, you can try something like this (unverified code):

 $columns = implode(" = '%s', ", array_keys($metas)) . " = '%s'"; $values = array_values($metas); $values[] = $user_id; $table = _get_meta_table('user'); $sql = "UPDATE $table SET $columns WHERE user_id = %d"; $wpdb->query( $wpdb->prepare($sql, $values) ); 
+5
source

just try adding the value with the same meta key and don't forget to set the third value to false as

 add_user_meta( $user_id , $meta_key , $value1 , false ); add_user_meta( $user_id , $meta_key , $value2 , false ); add_user_meta( $user_id , $meta_key , $value3 , false ); 

then when you get a meta-meta with a meta-key, it will return as:

 ['$value1','$value2','$value3'] 
+2
source

All Articles