4

I'm trying to create my own registration form and adding phone number as required field and I would love to save that phone number as custom user meta.

After validation and santizing inputs, ets. my code looks like this:

// this returns the correct value 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'] );

The user is created correctly, but there is something wrong with the phone meta field - in backend it looks like this: enter image description here

I also tried this approach to test whether the meta exists:

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

Also tried to add the meta with 'user_register' action like this:

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

And then using like this:

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

In all cases I end up with the situation described in the picture above. No meta title and the value is saved as multiple "Array"

In database it looks fine:

enter image description here

Do you have any idea what am I doing wrong?

Thank you

2

1 Answer 1

9

You have to trigger the following hooks:

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

Hope that helps!!

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.