質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

2回答

9194閲覧

reCAPTCHA for MW WP Form でバッヂが表示されない

popo_

総合スコア2

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2021/04/02 04:00

編集2021/04/02 05:01

MW WP Formに対して、reCAPTCHA v3を導入しようと、
reCAPTCHA for MW WP Formプラグインをインストール。
サイトキー、シークレットキーの設定、
MW WP Formの指定のタグの挿入を実施しました。

この対応でフォームのページにreCAPTCHAのバッヂが表示されれば、
正常な動作という事かと思いますが、バッヂが表示されません。

正常に機能しているページのソースと見比べてみると、
正常なページでは、ソースコードの後半に下記のようなコードが挿入されていました。

html

1<script type='text/javascript' src='https://www.google.com/recaptcha/api.js?render=****;ver=5.6.2' id='recaptcha-script-js'></script> 2<script type='text/javascript' id='recaptcha-script-js-after'> 3grecaptcha.ready(function() { 4 grecaptcha.execute('****', { 5 action: 'homepage' 6 }).then(function(token) { 7 var recaptchaResponse = jQuery('input[name="recaptcha-v3"]'); 8 recaptchaResponse.val(token); 9 }); 10 }); 11</script>

動作していないページではこのコードが挿入されていません。

おそらく wp_footer() の箇所に表示されているのかと思います。

wp_footer() の動作不良かと下記コードを
function.phpに記述してみると、これは出力ができました。

php

1function add_my_footer() { 2 echo '<!-- check -->'; 3} 4add_action('wp_footer', 'add_my_footer');

動作不良として、どこに原因がありそうか、
アドバイスをいただけないでしょうか

よろしくお願い致します。

対策と結果

WordPressのjQuery読み込みを回避していたので、
function.php に
フォームの入力、確認、完了ページのIDのみjQueryを読み込むコードを追加しました。

php

1function load_script(){ 2 if ( !is_admin() ){ 3 wp_deregister_script('jquery'); 4 } 5 if ( is_page(**) || is_page(**) || is_page(**) ){ 6 wp_enqueue_script('jquery'); 7 } 8} 9add_action('init', 'load_script');

結果に変化はありませんでした。
出力されているコード自体にも変化がなく、
WordPressのjQueryが読み込まれているという印象もないです。
記述方法に誤りがあるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKM

2021/04/02 04:02

これ、jQueryを使うんでしょうか?
popo_

2021/04/02 04:07

コメントありがとうございます。 プラグインとしては導入して設定するのみという事ですが、 自動挿入されているコードを見ると、確かにjQueryで書かれていますね。 function.php でWordPressのjQueryの出力を停止しているので、 その影響は考えられそうです。 この点について確認してみます。
guest

回答2

0

自己解決

問題があったのは、WordPress同梱のjQueryを利用せず、
独自に、かつWordPressを通さずにjQueryを読み込んでいたのが原因でした。

悪い対応

function.php

php

1function load_script(){ 2 if ( !is_admin() ){ 3 wp_deregister_script('jquery'); 4 } 5} 6add_action('init', 'load_script');

header.php

php

1<?php wp_head(); ?> 2<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

解決した対応

function.php

php

1function load_script(){ 2 if ( !is_admin() ){ 3 wp_deregister_script('jquery'); 4 wp_enqueue_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js', array(), '3.4.1'); 5 } 6} 7add_action('init', 'load_script');

header.php

php

1<?php wp_head(); ?>

このようにCDNのjQueryを利用する場合にも、WordPressを経由させる事で、
reCAPTCHA for MW WP Formプラグインが動作し、
必要なコードの挿入が行われました。

投稿2021/04/06 00:13

popo_

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

スクリプトでjQueryライブラリを読み込ませてますか?コンソールで
undefined $とかなってませんかね?

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

投稿2021/04/02 05:16

FKM

総合スコア3647

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

popo_

2021/04/02 05:46 編集

jQueryライブラリはテーマファイル直書きで読み込んでいます。 function.php ```php function load_script(){ if ( !is_admin() ){ wp_deregister_script('jquery'); } if ( is_page(**) || is_page(**) || is_page(**) ){ wp_enqueue_script('jquery'); } } add_action('init', 'load_script'); ``` header.php ```php <?php wp_head(); ?> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> ``` このような感じで読み込んでいます。 ちなみにFKMさんに張り付けていただいたコードに関しては、 正常に動いているサイトから引用したもので、 現状では、そもそもこのコードが挿入されないという問題になっています。
FKM

2021/04/02 06:08

DOMの後に記述してますけど、ライブラリは基本DOM読み込みの前に設定する必要あります。 コンソール上では$が認識されている状態でしょうか。
popo_

2021/04/02 07:48

jQueryを別読みしているので、$表記が有効になっています。 コンソールにエラーは出ていません。 > DOMの後に記述してますけど、ライブラリは基本DOM読み込みの前に設定する必要あります。 header.phpに直書きせずに、 function.phpを利用して、 WordPress自身にjQueryライブラリを出力させた方が良いという事ですよね。 試してみます。
popo_

2021/04/06 00:05

ご指摘いただいた懸念点を改善することで、無事解決ができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問