Я пытаюсь обновить несколько meta_key для пользователя в WordPress
update_user_meta( $user_id, array( 'nickname' => $userFirstName, 'first_name' => $userFirstName, 'last_name' => $userLastName , 'city' => $userCityID , 'gender' => $userGenderID) );
Но это не работает. Как мы можем обновить несколько meta_key для пользователя?
Пытаться:
<?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) );