サポート » プラグイン » Contact Form 7 Serial Numbersの連番取得

  • 解決済 pampamsan

    (@pampamsan)


    Contact Form 7 Serial Numbersのプラグインを利用し、メールに連番を付けております。
    現在、メール送信時の連番をユーザプロフィールの特定の項目に保存したいと考えておりますが、
    連番をデータとして取得する方法が判りません。
    Contact Form 7のメール送信時にプロフィール情報を更新する方法については、メール送信時に
    同時にユーザ登録する手順の情報を見つけたので、それを応用してプロフィール情報を更新させる
    こと自体は出来ましたが、そこに連番の情報を繋げたいと考えておりますが、いまいち判らない
    状況です。
    アドバイス等頂けると非常に助かります。
    よろしくお願い致します。

8件の返信を表示中 - 16 - 23件目 (全23件中)
  • トピック投稿者 pampamsan

    (@pampamsan)

    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 に指定する値が
    うまくセットされれば動くとは思うのですが。。。。

    トピック投稿者 pampamsan

    (@pampamsan)

    新たな切り分けとして、動作したコードの 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’ );

    何となく取得している値の取出し方、セットの仕方等に起因しているような
    気がしますが。。。

    トピック投稿者 pampamsan

    (@pampamsan)

            $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 になります」とのことです。ログイン状態ですか?

    トピック投稿者 pampamsan

    (@pampamsan)

    ishitakaさん、こんにちは。

    コメントありがとうございます。

    ログイン状態で試しておりますが、0 が返ってきている状況です。

    とりあえずフォームIDやフォームから連番についても確認したところ、
    こちらは正しい値が返ってきておりましたので、おそらくユーザIDが
    0 になっている事から、上手く更新出来ないと思われます。

    ユーザIDの取得部分を重点に調べてみます。

    トピック投稿者 pampamsan

    (@pampamsan)

    今、試しているフォームのページについては、試している最中と云う事で
    トップのページからリンクを貼っていない為、ログインした後にフォーム
    ページのURLを直接ブラウザに入れて表示しているのですが、この場合
    ログインされていない事になるのでしょうか?

    トピック投稿者 pampamsan

    (@pampamsan)

    他のトピック等を調べたところ、現在のバージョンでは wp_get_current_user() での
    ユーザーIDの取得が出来なくなっているようです。
    この情報トピックのコメントに get_user_by で取得出来そうな記述があったので、
    試してみたところ、上手くユーザーIDが取得され、連番の更新も上手く出来ました。

    色々とコメントいただき、ありがとうございました。

    トピック投稿者 pampamsan

    (@pampamsan)

    無事に解決致しましたので、閉じさせていただきます。
    munyaguさん、ishitakaさん、色々とコメントをいただき、
    ありがとうございました。

8件の返信を表示中 - 16 - 23件目 (全23件中)
  • トピック「Contact Form 7 Serial Numbersの連番取得」には新たに返信することはできません。