Salvare metadati personalizzati dell'utente durante la registrazione

15 mag 2017, 12:44:46
Visualizzazioni: 13.8K
Voti: 4

Sto cercando di creare un mio modulo di registrazione e aggiungere il numero di telefono come campo obbligatorio. Vorrei salvare quel numero di telefono come metadato personalizzato dell'utente.

Dopo la validazione e la sanificazione degli input, ecc., il mio codice è questo:

// questo restituisce il valore corretto ecc. - string(9) "126777889"
var_dump($metas['user_phone'])

$user_id = wp_insert_user($fields);
add_user_meta($user_id, 'user_phone', $metas['user_phone']);

L'utente viene creato correttamente, ma c'è qualcosa che non va con il campo meta del telefono - nel backend appare così: Schermata backend con problema metadati

Ho anche provato questo approccio per verificare se il meta esiste:

if(get_user_meta($user_id,'user_phone')) {
    update_user_meta($user_id,'user_phone');
} else {
    add_user_meta($user_id,'user_phone');    
}

Ho anche provato ad aggiungere il meta con l'azione 'user_register' in questo modo:

function addMyCustomMeta($user_id,$meta) {
    update_user_meta($user_id,$meta);
}
add_action('user_register','addMyCustomMeta',10,2,);

E poi usandolo così:

$user_id = wp_insert_user($fields);
do_action('addMyCustomMeta',$user_id,$metas['user_phone']);

In tutti i casi finisco con la situazione descritta nell'immagine sopra. Nessun titolo meta e il valore viene salvato come multipli "Array"

Nel database invece appare corretto:

Schermata database con metadati corretti

Avete qualche idea su cosa sto sbagliando?

Grazie

2
Commenti

Come si stampano i valori nel tuo codice HTML? Condividere il tuo codice html sarebbe utile.

Laxmana Laxmana
15 mag 2017 12:55:33
Tutte le risposte alla domanda 1
1

Devi attivare i seguenti hook:

  • user_register
  • personal_options_update
  • edit_user_profile_update

    add_action('user_register', 'addMyCustomMeta');    
    add_action('personal_options_update', 'addMyCustomMeta' );    
    add_action('edit_user_profile_update','addMyCustomMeta' );    
    function addMyCustomMeta( $user_id ) {    
               update_user_meta( $user_id, 'user_phone', $_POST['user_phone'] ); 
    }
    

Spero che ti sia utile!!

15 mag 2017 13:22:19
Commenti

In quale parte del mio codice dovrei aggiungere le azioni? Voglio attivarle solo se tutti i valori e i meta sono validi, ecc. Vedi: http://gist.github.com/cafesk8/78e7ac3555aa94afcb35d815853c4365

Cafourek Cafourek
15 mag 2017 14:54:45