ishitakaさん、こんにちは。
コメント有難う御座います。
デバッグモードでエラーが見つかりました。
余計な括弧が含まれていたので、括弧を除いた所、正常に動きました。
とりあえずフォームIDを指定せず、update_user_meta
に直接値を
セットすると動きました。(以下のコード)
function my_save_prof( $contact_form ) {
//送信情報取得
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
//自ユーザーID取得
$user = wp_get_current_user();
$my_userid = $user->ID;
//プロフィール更新
$formdata = $submission->get_posted_data();
update_user_meta(‘9’, ‘Serial_No’, ’00001’);
}
}
add_action( ‘wpcf7_mail_sent’, ‘my_save_prof’ );
あとはフォームIDの判定と update_user_meta
に指定する値が
うまくセットされれば動くとは思うのですが。。。。
新たな切り分けとして、動作したコードの update_user_meta
に指定している
ユーザIDを取得したIDの変数に変えて試したところ、更新されなくなりました。
そうなると取得したユーザIDが変数に上手くセットされていない可能性があると
思いますが、コードを見る限りでは何処に問題があるのか判らない状況です。
(ユーザIDを取得した変数に変更したコード)
function my_save_prof( $contact_form ) {
//送信情報取得
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
//自ユーザーID取得
$user = wp_get_current_user();
$my_userid = $user->ID;
//プロフィール更新
$formdata = $submission->get_posted_data();
update_user_meta($my_userid, ‘Serial_No’, ’00001’);
}
}
add_action( ‘wpcf7_mail_sent’, ‘my_save_prof’ );
何となく取得している値の取出し方、セットの仕方等に起因しているような
気がしますが。。。
$user = wp_get_current_user();
$my_userid = $user->ID;
取得されたユーザID「$my_userid」をファイルに出力させて確認したところ、
’0’ となっておりました。
ログインしている自身のユーザIDとも違い、そもそもユーザIDが ’0’ の
データは存在しておりません。
取得の仕方が悪いのでしょうか?
wp_get_current_user() のドキュメントをご覧ください。
https://codex.wordpress.org/Function_Reference/wp_get_current_user
「ユーザーがいない場合は、ID は 0 になります」とのことです。ログイン状態ですか?
ishitakaさん、こんにちは。
コメントありがとうございます。
ログイン状態で試しておりますが、0 が返ってきている状況です。
とりあえずフォームIDやフォームから連番についても確認したところ、
こちらは正しい値が返ってきておりましたので、おそらくユーザIDが
0 になっている事から、上手く更新出来ないと思われます。
ユーザIDの取得部分を重点に調べてみます。
今、試しているフォームのページについては、試している最中と云う事で
トップのページからリンクを貼っていない為、ログインした後にフォーム
ページのURLを直接ブラウザに入れて表示しているのですが、この場合
ログインされていない事になるのでしょうか?
他のトピック等を調べたところ、現在のバージョンでは wp_get_current_user()
での
ユーザーIDの取得が出来なくなっているようです。
この情報トピックのコメントに get_user_by
で取得出来そうな記述があったので、
試してみたところ、上手くユーザーIDが取得され、連番の更新も上手く出来ました。
色々とコメントいただき、ありがとうございました。
無事に解決致しましたので、閉じさせていただきます。
munyaguさん、ishitakaさん、色々とコメントをいただき、
ありがとうございました。