Prova:
<?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);
}
Così, invece di passare la matrice per update_user_meta
che accetta solo argomenti stringa per $meta_key
, un ciclo su l'array e chiamare update_user_meta
per ogni coppia chiave/valore nella matrice.
EDIT:
WordPress non dà una costruito in modo da aggiornare più metas in una sola volta. Parte del motivo dell'utilizzo della funzione incorporata è che i filtri e gli hook possono essere registrati per operare sulle meta informazioni. Questi non saranno chiamati se li aggiorni direttamente.
Detto questo, si può provare qualcosa di simile (codice non testato):
$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)
);
sto cercando di aggiornare tutti t I campi dei metadati che utilizzano un aggiornamento – Fadi
Non c'è modo di farlo incorporato per le ragioni menzionate nella mia modifica, ma c'è del codice che puoi provare a modificare per fare ciò che vuoi. – drew010
Ricorda che 'update_user_meta()' inserirà il valore anche se non esiste. L'esecuzione di una query 'UPDATE' sul DB direttamente aggiornerà solo i valori esistenti. –