Salvează metadate personalizate ale utilizatorului la înregistrare

15 mai 2017, 12:44:46
Vizualizări: 13.8K
Voturi: 4

Încerc să creez propriul formular de înregistrare și să adaug numărul de telefon ca câmp obligatoriu, iar aș dori să salvez acest număr de telefon ca metadate personalizate ale utilizatorului.

După validare și curățarea datelor introduse, codul meu arată astfel:

// aceasta returnează valoarea corectă etc. - string(9) "126777889"
var_dump($metas['user_phone'])

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

Utilizatorul este creat corect, dar ceva nu funcționează cu câmpul meta pentru telefon - în backend arată astfel: Captură de ecran care arată problema cu metadatele telefonului în backend WordPress

Am încercat și această abordare pentru a testa dacă meta există:

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

Am încercat de asemenea să adaug meta cu acțiunea 'user_register' astfel:

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

Și apoi folosind astfel:

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

În toate cazurile ajung la situația descrisă în imaginea de mai sus. Fără titlu meta și valoarea este salvată ca multiple "Array"

În baza de date arată în regulă:

Captură de ecran care arată metadatele telefonului în baza de date WordPress

Aveți vreo idee ce fac greșit?

Mulțumesc

2
Comentarii

Cum afișezi valorile în codul tău HTML? Partajarea codului tău HTML ar fi utilă.

Laxmana Laxmana
15 mai 2017 12:55:33
Toate răspunsurile la întrebare 1
1

Trebuie să declanșați următoarele hook-uri:

  • 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'] ); 
    }
    

Sper că acest lucru vă ajută!!

15 mai 2017 13:22:19
Comentarii

În ce parte a codului meu ar trebui să adaug acțiunile? Vreau să le declanșez doar dacă toate valorile și metadatele sunt valide, etc. Vezi: http://gist.github.com/cafesk8/78e7ac3555aa94afcb35d815853c4365

Cafourek Cafourek
15 mai 2017 14:54:45