reCAPTCHA for MW WP Formでバッジが表示されない原因と対処法

WordPress

reCAPTCHA for MW WP Formでバッジが表示されない原因と対処法

やまだ
こんにちは、山田です。

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 でバッヂが表示されない

reCAPTCHA for MW WP Formプラグインでバッジが表示されない原因と解決法

WordPressでjQueryを利用する際の書き方と注意点

-WordPress
-,