
MW WP Formでスパムメールがエグかったので、reCAPTCHA for MW WP Formを導入したんですが…
reCAPTCHAのバッジが全く表示されない。
ちゃんと手順通り設定したのに、全く出てこなくてハマってしまったので、原因と対処法のメモです。
スポンサーリンク
主な原因は3つ
色々調べていくと、reCAPTCHA for MW WP Formでバッジが表示されない主な原因は以下の3つ。
- wp_footer()の付け忘れ
- 投稿内容にショートコードを埋め込んでいない
- jQueryの記述ミス
wp_footer()の付け忘れ
オリジナルテーマで作っているとやりがちなのが、wp_footer()の付け忘れ。
ワードプレスを使う上で絶対に必要なおまじないみたいなものです。
footer.phpに<?php wp_footer(); ?>の記述がないと、正常にプラグインが動かない場合があるので、無い場合はいますぐぶち込みましょう。
投稿内容にショートコードを埋め込んでいない
MW WP Formを使う時、フォームを出力するショートコードをどこに埋め込んだかでバッジが出力されない場合があります。
例えば、コンテンツの中身を、管理画面の投稿ページ(もしくは固定ページ)ではなく、テンプレートファイルで管理してる場合。
固定ページの中身は空っぽにして、テンプレートファイルに
<?php echo do_shortcode('[mwform_formkey key="757"]'); ?>
みたいな記述をしてる方は要注意。
reCAPTCHA for MW WP Formは、投稿内容にショートコードが存在するかを判定して画面に表示させる仕組みのようで、テンプレートファイルに書いてるとうまく動かないようです。
対処法としては、固定ページにショートコードを埋め込む、これだけです。

jQueryの記述ミス
原因、これでした。
サイトを作るとき、WordPress同梱のjQueryが上手く動かないので、わけもわからずheader.phpにこういう記述をしてたんですよね…
【エラーになる書き方】
<?php wp_head(); ?> <?php wp_deregister_script('jQuery'); ?> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
この書き方だと、WordPressを通さずにjQueryの読み込みをしているらしく、WordPressのプラグインが上手く動かなかった…という事みたいです。
以下に書き換えた事で、無事動きました!!!
【functions.php】
function my_script_init(){ wp_deregister_script('jQuery'); wp_enqueue_script( 'jQuery_cdn', 'https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js'); } add_action('wp_enqueue_scripts', 'my_script_init');
【header.php】
<?php wp_head(); ?>
まとめ
いやーーーーーーーーーー見事にハマってしまいましたね。
駆け出しのプログラマ時代は、よく /* なんか知らんけど動く */ みたいな事が多々あって、後からバグるみたいな事が結構あって、そのことを思い出しました。
jQueryの記述に関しては、いつも頭を悩ますところではあったので、今回で解決してよかったのかも。
以下のサイト様方にかなり知恵を貸していただきました。ありがとうございました。
→reCAPTCHA for MW WP Form でバッヂが表示されない