web-dev-qa-db-ja.com

登録時にカスタムユーザーメタを保存

私は自分自身の登録フォームを作成し、必須フィールドとして電話番号を追加しようとしています、そして私はその電話番号をカスタムユーザーメタとして保存したいです。

検証と入力の検証の後、それでは。私のコードは次のようになります。

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

ユーザーは正しく作成されましたが、電話のメタフィールドに問題があります - バックエンドでは以下のようになります: enter image description here 

私はまたメタが存在するかどうかをテストするためにこのアプローチを試しました:

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

このように 'user_register'アクションを使ってメタを追加しようとしました。

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

そして、このように使う:

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

すべての場合において、私は上の図で説明されている状況に陥ります。メタタイトルはなく、値は複数の「配列」として保存されます

データベースではそれはうまく見えます:

enter image description here 

あなたは私が間違っていることについて何か考えがありますか?

ありがとうございました

1
Cafourek

以下のフックを起動する必要があります。

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

それが役立つことを願っています!

4
Aishan