※ この募集は締め切られました。
Contact Form 7のフォームがreCAPTCHA設定すると送信できなくなり困っています
【教えてもらいたいこと】
プログラミング/WEB制作
【具体的な相談内容】
WordPressを利用しオリジナルのテーマで制作したwebサイトです。
海外からのスパム問い合わせが大量に届くためreCAPTCHAを設定したいのですが、設定するとContact Form 7のフォームが送信できなくなります。
色々プラグインを試しましたがどれも無料プランだとCF7に適用されず、functions.phpにreCAPTCHA設定を記述している状況です。
(直近まではfunctions.phpにて英語だけの問い合わせがこないよう制御することで力技ですがスパムを止めておりました...が海外からの正規の問い合わせがある可能性もあるためちゃんとreCAPTCHAにて弾きたいです)
本件について単発でサポートしていただける方を募集します。
zoom等で直接見ていただけたらより有り難いですが、日程調整に時間がかかるようであればチャットでのやり取りでご指導いただければと思います。
よろしくお願いいたします。
<追記>
エラーの内容は通常のCF7の送信エラーで、同じ事象は検索すると以下のようなサイトが複数出てきます。みなプラグインでのreCAPTCHA設定で解決しているようですがそれが(無料だと)上手くいかない状況です。
https://www.take-taxlabor.com/post-9788/
ConsoleタブにはChromeのサードパーティCookie 制限に関する通知「Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies.」しか表示されておりません。
functions.phpに直接記述している内容は以下です。
function add_recaptcha_js() {
?>
<script src="https://www.google.com/recaptcha/api.js?render='サイトキー'"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
grecaptcha.ready(function() {
grecaptcha.execute("サイトキー", { action: "submit" }).then(function(token) {
let recaptchaResponse = document.getElementById("g-recaptcha-response");
if (recaptchaResponse) {
recaptchaResponse.value = token;
}
});
});
});
</script>
<?php
}
add_action("wp_footer", "add_recaptcha_js");
function verify_recaptcha($spam, $tag) {
$recaptcha_secret = "シークレットキー";
$recaptcha_response = $_POST["g-recaptcha-response"];
$response = wp_remote_post("https://www.google.com/recaptcha/api/siteverify", array(
"body" => array(
"secret" => $recaptcha_secret,
"response" => $recaptcha_response,
),
));
$success = json_decode(wp_remote_retrieve_body($response))->success;
if (!$success) {
return true; // スパムと判定
}
return $spam;
}
add_filter("wpcf7_spam", "verify_recaptcha", 10, 2);