質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

1218閲覧

新規記事および新規ユーザに対してupdate_fieldが効かない。

muro

総合スコア99

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2018/05/09 07:15

WordpressのAdvanced Custom fieldsというプラグインを使って、投稿タイプおよびユーザ情報に対して、カスタムフィールドを追加しています。

php

1// 例 2$post_id = wp_insert_post([ 3 "post_title" => filter_input(INPUT_POST, "title"), 4 "post_type" => "hoge", 5 "post_status" => "publish", 6]); 7update_post_meta($post_id, "fuga", filter_input(INPUT_POST, "fuga")); 8 9wp_insert_user([ 10 "user_login" => filter_input(INPUT_POST, "log"), 11 "user_pass" => filter_input(INPUT_POST, "pwd"), 12 "user_email" => filter_input(INPUT_POST, "email"), 13 "nickname" => filter_input(INPUT_POST, "nickname"), 14]); 15update_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で更新することができないので、困っています。

https://support.advancedcustomfields.com/forums/topic/wp_insert_post-update_field/
上記サイトでおそらく同じ現象が報告されており、カスタムフィールドの名前を指定するときに、「field_586131d916252」といったようなフィールドキーを使えば解決すると見て取れます。
よって、管理画面からinputの要素検証をしてフィールドキーを調べ、update_fieldを書き換えたのですが、これだと正常に保存できず、管理画面でもカスタムフィールドを取得できていませんでした。

どうすれば、wp_insert_userおよびwp_insert_postで新規に増やしてから、update_fieldで更新したカスタムフィールドを、正常に取得できるようになるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

しかし、ユーザのカスタムフィールドはupdate_post_metaで更新することができないので、困っています。

update_user_metaを使えばどうでしょう。

【update_user_meta – WordPress私的マニュアル】
https://elearn.jp/wpman/function/update_user_meta.html

投稿2018/05/09 13:41

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

muro

2018/05/10 02:27

ありがとうございます。update_fieldからupdate_user_metaに置き換えることで、wp_insert_postで作成した新規ユーザのカスタムフィールドも、編集できるようになりました。 なぜupdate_fieldではダメだったのか結局謎のままですが、wordpress標準のカスタムフィールドの関数でも問題ありませんでしたし、ACF固有の関数は使わないようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問