2015-06-03 14 views
5

Sto cercando di aggiornare meta_key multiple per l'utente in WordPressCome aggiornare meta utente per meta_key multiplo in wordpress

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

ma non sta funzionando. Come possiamo aggiornare più meta_key per l'utente?

risposta

5

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

sto cercando di aggiornare tutti t I campi dei metadati che utilizzano un aggiornamento – Fadi

+0

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

+0

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. –

2

solo cercare di aggiungere il valore con la stessa chiave di meta, e ricordarsi di impostare il terzo valore su false, proprio come

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

poi quando si arriva meta utente con il tasto Meta, ritornerà come:

['$value1','$value2','$value3'] 
Problemi correlati