Как обновить мету пользователя для нескольких meta_key в WordPress

Я пытаюсь обновить несколько meta_key для пользователя в WordPress

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

Но это не работает. Как мы можем обновить несколько meta_key для пользователя?

5

Решение

Пытаться:

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

Таким образом, вместо передачи вашего массива update_user_meta который принимает только строковые аргументы для $meta_key, перебрать массив и вызвать update_user_meta для каждой пары ключ / значение в массиве.

РЕДАКТИРОВАТЬ:

WordPress не предоставляет встроенного способа обновления нескольких мета одновременно. Одной из причин использования их встроенной функции является то, что фильтры и хуки могут быть зарегистрированы для работы с метаинформацией. Они не будут вызваны, если вы обновите их напрямую.

Тем не менее, вы можете попробовать что-то вроде этого (код не проверен):

$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)
);
8

Другие решения

просто попробуйте добавить значение с тем же мета-ключом, и не забудьте установить третье значение на false, как

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

тогда, когда вы получите мета-ключ пользователя с мета-ключом, он вернется как:

['$value1','$value2','$value3']
3

По вопросам рекламы [email protected]