サポート » プラグイン » Contact Form 7でフック処理をするとログインユーザーが取れなくなった

  • 解決済 Yuichiro ABE

    (@yuichiro-abe)


    いつも大変便利に使わせていただいています。

    Contact Form 7の最近のバージョンアップで_wpnonceを使わずに独自のnonceを利用するように
    なったようなのですが、これにより、
    フォームのsubmit時にログインユーザーの場合に何か処理をしたい時に
    wp-includes/rest-api.phpの
    関数rest_cookie_check_errors()で(WordPress4.8では734行目)
    wp_set_current_user( 0 );
    されてしまいユーザー情報が取れなくなってしまいました。

    何か回避策があると良いのですが、
    本来のプラグインの使い方では無いのかもしれないため、
    トピックにすべきか迷いましたがご質問させていただきました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • Yuichiro ABE

    (@yuichiro-abe)

    すみません、タグ付け忘れました。

    Yuichiro ABE

    (@yuichiro-abe)

    自己解決というか回避策見つけました。

    あまり綺麗な対応では無いですが

    お問合せ設定のフォーム上のどこかに
    <input type=”hidden” name=”_wpnonce” class=”mysite_wpnonce” value=”” />
    を記載して

    PHPで以下ヘッダーにnonceの値をセットするJS処理を入れることで回避できました。
    お騒がせしました。

    add_action( 'wp_print_scripts', 'mysite_wp_print_scripts' );
    function mysite_wp_print_scripts() {
      if ( ! is_admin() ) {
    ?>
        <script type="text/javascript">
          (function($){
            $(function(){
              $('.mysite_wpnonce').val("<?php echo wp_create_nonce('wp_rest');?>");
            });
          })(jQuery);
        </script>
    <?php
      }
    }
    モデレーター Takayuki Miyoshi

    (@takayukister)

    Yuichiro ABE

    (@yuichiro-abe)

    ありがとうございます。
    参考の方も拝見させていただきましたが、そちらの方法ですとHTML上のメールアドレス等を変更するだけで他のユーザーとしてフォームを送信出来てしまうため他の方法を探っておりました。

    やはり現状では_wpnonceをフォーム内に追加する、上で記載した方法が良さそうです。
    ご返信ありがとうございました。

    • この返信は2 ヶ月前に  Yuichiro ABE さんが編集しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • このトピックに返信するにはログインが必要です。