How to update user meta for multiple meta_key in wordpress
Asked Answered
I

3

7

I'm trying to update multiple meta_key for user in WordPress

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

but it is not working. How can we update multiple meta_key for user?

Irradiant answered 3/6, 2015 at 4:19 Comment(0)
V
10

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 );
}

So instead of passing your array to update_user_meta which only accepts string arguments for $meta_key, loop over the array and call update_user_meta for each key/value pair in the array.

EDIT:

WordPress doesn't give a built in way to update multiple metas at once. Part of the reason for using their built in function is because filters and hooks can be registered to operate on the meta information. These won't be called if you update them directly.

That said, you can try something like this (code untested):

$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)
);
Vergievergil answered 3/6, 2015 at 4:33 Comment(4)
i'm trying to update all the meta data fields using one updateIrradiant
There is no way to do that built-in for reasons mentioned in my edit, but there is some code you can try to modify to do what you want.Vergievergil
Bear in mind that update_user_meta() will also insert the value if it doesn't exist. Running an UPDATE query on the DB directly will only update existing values.Oakman
wp_update_post does take meta_input. It's just a loop internally though, so there's no performance benefit.Fouquet
B
5

just try to add the value with the same meta key,and remember to set the third value to false just like

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 user meta with the meta key ,it will return like:

['$value1','$value2','$value3']
Backcross answered 31/1, 2018 at 9:41 Comment(1)
Still valid in 2020!Foreleg
G
0

$userid = get_current_user_id();
$name = ;
$surname = ;

wp_update_user( array( 'ID' => $userid, 'first_name' => $name, 'last_name' => $surname ) );

Gilemette answered 21/10, 2022 at 23:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.