【備忘録】Invisible reCaptchaとコンタクトフォーム7でサンクスページにリダイレクトしない問題を解決
■問題点
コンタクトフォーム7にreCaptchaの設定をする際にこれまでは「Invisible reCaptcha」プラグインを使って問い合わせページにのみreCaptchaを表示させていたところ、問い合わせ後にサンクスページにリダイレクトしない問題が起こった。どうもreCaptchaが邪魔をしているみたい。
■解決方法
コンタクトフォーム7でreCaptchaを設定し、function.phpで問い合わせページ以外にはreCaptchaを表示させない設定にすると解決した。
以下、function.phpでの設定。
add_action( 'wp_enqueue_scripts', function() {
if ( is_page( 'contact' ) ) {
return;
}
wp_deregister_script( 'google-recaptcha' );
}, 100, 0 );
この方法だと、ajaxが動いてリダイレクトされた。
リダイレクトはコンタクトフォームに以下を追記。
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
location = 'https://◯○.com/thanks';
}, false );
</script>
1点。
そもそもはコンタクトフォームでreCaptchaを設定するとすべてのページにreCaptchaが表示されてしまい無駄に表示速度が遅くなるので、「Invisible reCaptcha」で特定ページのみにreCaptchaを表示させていた。
で、今回はfunction.phpでreCaptcha表示場所を制御する形にしたが、コンタクトフォームでreCaptchaを設定した場合はwordpress管理画面のログインフォームにはreCaptchaはでないので、、結局「Invisible reCaptcha」でログインフォームにreCaptchaを表示させる必要があった。
以上!