お問い合わせフォームが出来ました!……と喜んだのも束の間、すぐに気になったことがありました。
「これ、スパムメールが大量に届いたらどうしよう?」
WordPressのお問い合わせフォームは外部から誰でも送信できるため、何も対策していない状態では少し不安です。そこで今回は、Contact Form 7にCloudflare Turnstileを設定して、ボットによる迷惑な送信を防ぐ対策を行いました。
設定前は「また別のプラグインが必要なのかな?」と思っていましたが、現在のContact Form 7にはTurnstileとの連携機能が標準で用意されています。コードを書く必要もなく、思っていたより簡単に設定できました!
この記事で分かること
・Cloudflare Turnstileとは何か
・Contact Form 7でTurnstileを使うメリット
・サイトキーとシークレットキーの取得方法
・WordPressへの設定手順
・設定後に確認するポイント
Cloudflare Turnstileとは?
Cloudflare Turnstileは、お問い合わせフォームを送信しているのが人間か、自動送信を行うボットかを判定する仕組みです。
よくある「信号機の画像をすべて選んでください」といった操作を毎回求めるのではなく、通常は裏側で判定してくれます。読者の負担を増やしにくいところも良いですね。
Contact Form 7の公式サイトでも、Turnstileはスパムボットからフォームを保護する連携機能として案内されています。詳しくはContact Form 7公式のTurnstile連携ページを確認できます。
Turnstileの大まかな仕組み
- 読者がお問い合わせフォームを開く
- Turnstileがブラウザー上で判定を行う
- 送信時にWordPress側で結果を確認する
- 正常な内容だけがメールとして送信される

私がTurnstileを選んだ理由
スパム対策にはAkismetやGoogle reCAPTCHAなど、いくつかの選択肢があります。その中で今回はTurnstileを選びました。
- Contact Form 7に連携機能が標準搭載されている
- 新しいWordPressプラグインを追加しなくてよい
- 無料で利用できる
- 読者に面倒な画像選択を求めにくい
- コードを書かずに設定できる
プラグインを増やしすぎると、更新や相性の確認も増えてしまいます。標準機能として連携できるなら、そのほうが管理しやすそうです。これは良い感じですね!
設定前に準備するもの
- Contact Form 7を設置したWordPressサイト
- Cloudflareのアカウント
- Turnstileを設定するサイトのドメイン
私の場合は、すでにContact Form 7でお問い合わせページを作成していたため、Cloudflare側でキーを取得するところから始めました。
手順1:CloudflareでTurnstileのウィジェットを作成する
最初にCloudflareへログインし、Turnstileの管理画面を開きます。そこで新しいウィジェットを追加しました。
- CloudflareのダッシュボードでTurnstileを開く
- ウィジェットを追加を選択する
- 分かりやすいウィジェット名を入力する
- 対象ホスト名に自分のドメインを登録する
- ウィジェットモードを選んで作成する
ウィジェットモードは、Cloudflareが状況に応じて判定方法を調整する「Managed(管理対象)」を選びました。公式の作成手順はCloudflare Turnstileのドキュメントでも確認できます。
ホスト名の入力例:disart-f.jp
通常は「https://」やページ末尾の「/」を付けず、ドメインを登録します。
手順2:サイトキーとシークレットキーを取得する
ウィジェットを作成すると、次の2種類のキーが発行されます。
| キー | 役割 | 取り扱い |
|---|---|---|
| サイトキー | フォームにTurnstileを表示するための公開用識別子 | 公開ページで使われる |
| シークレットキー | 判定結果をサーバー側で確認するための秘密情報 | 外部へ公開しない |
ここは少し緊張しました。特にシークレットキーをスクリーンショットや記事へ載せないように注意が必要です。Cloudflareも、シークレットキーは安全に保管し、公開しないよう案内しています。
手順3:Contact Form 7へキーを登録する
続いてWordPressの管理画面へ戻り、Contact Form 7とTurnstileを連携します。
- WordPress管理画面の「お問い合わせ」を開く
- 「インテグレーション」を選択する
- Turnstile欄の「インテグレーションのセットアップ」を開く
- サイトキーを入力する
- シークレットキーを入力する
- 「変更を保存」を押す
これだけでした。フォームのHTMLを編集したり、PHPコードを書いたりする必要はありません。「もう出来たの?」というくらい簡単で、無事に行けましたね!
手順4:お問い合わせページで動作を確認する
設定を保存したら、実際のお問い合わせページを開いて確認します。
- お問い合わせフォームがこれまでどおり表示されるか
- Turnstileの判定部分がフォーム内に追加されているか
- 入力欄や送信ボタンのレイアウトが崩れていないか
- テスト送信したメールが正常に届くか
私のサイトでも公開画面を確認したところ、フォーム内にTurnstileの判定要素が追加されていました。シークレットキーが公開画面へ表示されていないことも確認できました。
最後は自分でテスト送信を行いましょう。
ウィジェットが表示されていても、メール設定に問題がある可能性はあります。送信完了の表示と、受信メールの両方を確認すると安心です。
設定するときに気を付けたいこと
シークレットキーを公開しない
サイトキーは公開ページで使用されるものですが、シークレットキーはサーバー側で利用する秘密情報です。ブログ記事の画像、SNS、チャットなどへ貼り付けないようにしましょう。
登録するドメインを間違えない
Cloudflare側で登録したホスト名と、実際にフォームを設置しているサイトのドメインが一致しているか確認します。テスト環境やサブドメインでも使う場合は、それぞれの環境を意識して設定する必要があります。
対策後も完全にゼロになるとは限らない
Turnstileはボット対策として有効ですが、すべての迷惑メールを100%防げると断言はできません。もしスパムが届く場合は、Contact Form 7の禁止用語リストやAkismetなどを追加で検討します。
よくある疑問
追加のWordPressプラグインは必要?
今回の方法では必要ありません。Contact Form 7のインテグレーション画面からTurnstileを設定できます。
Cloudflareでサイト全体を管理していなくても使える?
はい。Cloudflareの公式ドキュメントでは、TurnstileはサイトがCloudflareのネットワークを経由していなくても利用できる独立したサービスとして案内されています。
Turnstileが目立たないけれど動いている?
設定したモードや判定状況によって、読者へ求められる操作は変わります。まずはフォーム内のTurnstile要素と、実際のテスト送信を確認しましょう。
まとめ:お問い合わせフォームを作ったらスパム対策も忘れずに
今回は、Contact Form 7にCloudflare Turnstileを設定して、お問い合わせフォームのスパム対策を行いました。
- 追加プラグインなしで設定できた
- Cloudflareで2種類のキーを取得した
- Contact Form 7のインテグレーション画面へ登録した
- 公開ページとテスト送信で動作を確認する
- シークレットキーは絶対に公開しない
お問い合わせページが出来た直後は「スパムが来たら怖いな……」と感じましたが、想像よりも簡単に対策できました。これで少し安心して、思う存分ブログを投稿していけそうです!
ChatGPTとWordPressを連携して記事の下書きを作る方法は、こちらの「ChatGPTにWordPressブログを書かせる方法」で紹介しています。

コメント