MW WP Formで完了ページへ遷移しない

どなたかが開発したWordpressのテーマで、MW WP Formの実装を行ったのですが、どうも思い通りに遷移しない。さらに、ページ遷移をしない状態にしても、cooikeが消え無いなど、どうも挙動がおかしく、あれこれ悩みました。で、ググって最終的にたどり着いたのが、footer.php内にwp_footer()が埋め込まれていなかったという単純なミスでした。

自分で作ったものなら、当たり前に埋め込むwp_footer()ですが、他の方が作ったものを触るときは、確認するべきでした。

それと、こちらのWordpressではWP fastest cacheを使っていたのでcookieのキャッシュが効かないように
WP Fastest Cache の設定>除外する>Cookiesを除外する
で「mw-wp-form_」を追加して、こちらをキャッシュしないようにしました。

reCAPTCHA for MW WP Formにバグ

また、spam対策としてreCAPTCHA for MW WP Formをインストロールしたのですが、こちらでは「Invalid reCAPTCHA Secret key.」となって、遷移できないというトラブルに遭遇しました。

サイトキーとセキュリティキーを取得し直したり、色々トライしても同じ状態です。で、念の為、ソースコード確認すると、セキュリティキーを記述するべき場所にサイトキーが格納されていました。単純ミスすぎる〜(# ゚Д゚)

早速プラグインのソースを確認するとEnqueueController.phpで致命的なバグを見つけました。

            $data = <<< EOL
grecaptcha.ready(function() {
    grecaptcha.execute('$site_key', {
            action: 'homepage'
        }).then(function(token) {
            var recaptchaResponse = jQuery('input[name="recaptcha-v3"]');
            recaptchaResponse.val(token);
        });
    });
EOL;

$site_keyとありますが、ここにはシークレットキーを埋め込むべきなので、$secret_keyとするべきです。加えてoptionから取得してくるコードも抜けていて、この上に
$secret_key = esc_html($option[‘secret_key’]);
を追加したら正しく動作しました。

MW WP Formがよく出来ているプラグインなので安心して使いましたが、reCAPTCHA for MW WP Formに関しては失格です。

コードに書き換えて納品しても良かったのですが、プラグインはアップデートされることがあるので、今回はreCAPTCHAのコードを直書きしました。

<script type='text/javascript' src='https://www.google.com/recaptcha/api.js?render=6LeETdseAAAAADp--gtM9n_Pxxxxxxxxxx' async charset='UTF-8' id='recaptcha-script-js'></script>
<script type='text/javascript' id='recaptcha-script-js-after'>
grecaptcha.ready(function() {
    grecaptcha.execute('6LeETdseAAAAAJTPXnT1NlN_Wxxxxxxxxxx', {
            action: 'homepage'
        }).then(function(token) {
            var recaptchaResponse = jQuery('input[name="recaptcha-v3"]');
            recaptchaResponse.val(token);
        });
    });
</script>

※キーは一部書き換えています。