質問: wp_insert_post([ "post_title" => filter_input(INPUT_POST, "title"), "post_type" => "hoge", "post_status" => "publish", ]); update_post_meta($post_id, "fuga", filter_input(INPUT_POST, "fuga")); wp_insert_user([ "user_login" => filter_input(INPUT_POST, "log"), "user_pass" => filter_input(INPUT_POST, "pwd"), "user_email" => filter_input(INPUT_POST, "email"), "nickname" => filter_input(INPUT_POST, "nickname"), ]); update_field("xxxx", $xxxx, "user_" . $user->ID); ``` 上記のような感じでwp_insert_userで記事、wp_insert_postでユーザを新規追加したあと、それらに対してupdate_fieldでカスタムフィールドを更新しました。 そのあと公開画面上の別の画面でget_fieldを行っても、値を取得することができません。 ただし、管理画面からカスタムフィールドを確認してみると、値は保存されており、そのまま更新を行うと、公開画面上でも取得することができました。 とはいえ新規投稿してから、わざわざ管理画面から更新ボタンをするわけにもいきません。 なお、記事に対してはupdate_fieldではなくupdate_post_metaを使うことで、get_fieldをしたときに新規記事に対してもカスタムフィールドを取得することができました。 しかし、ユーザのカスタムフィールドはupdate_post_metaで更新することができないので、困っています。 上記サイトでおそらく同じ現象が報告されており、カスタムフィールドの名前を指定するときに、「field_586131d916252」といったようなフィールドキーを使えば解決すると見て取れます。 よって、管理画面からinputの要素検証をしてフィールドキーを調べ、update_fieldを書き換えたのですが、これだと正常に保存できず、管理画面でもカスタムフィールドを取得できていませんでした。 どうすれば、wp_insert_userおよびwp_insert_postで新規に増やしてから、update_fieldで更新したカスタムフィールドを、正常に取得できるようになるのでしょうか?
回答: > > しかし、ユーザのカスタムフィールドはupdate_post_metaで更新することができないので、困っています。 > > > `update_user_meta`を使えばどうでしょう。 【update_user_meta – WordPress私的マニュアル】