「WordPressのコメントフォームからスパムコメントが届いて困っている」
「コメントフォームでスパム対策を行いたい」
今回は、そんな方向けにスパム対策をご紹介いたします。reCAPTCHAの代わりになる「Turnstile」を使った対策方法です。
設定はコピペでかんたんに行えるので、スパムコメントに悩まされている方でもすぐに導入可能です。
WordPressのコメントフォームにTurnstileを設定しよう
無料のスパム対策として使える「Turnstile」というサービス。
WordPressプラグイン「Contact Form 7」をお使いの場合、こんなメッセージが表示されていませんか? スパム対策として、reCAPTCHAを設定している方も多いと思いますが、無料枠を超過した場合、課金される可能性があるというものです。 Contact Form 7...
上記記事では、Contact Form 7に「Turnstile」を設定する方法をご紹介していますが、
当記事では、WordPressのコメントフォームに、Turnstileを設定する方法をご紹介します。
下準備
設定前の下準備として、次の2点を確認してください。
- Turnstileのサイトキー・シークレットキーを取得済み
- functions.phpを編集するために「Code Snippets」などのプラグインを有効化済み
Turnstileのサイトキー・シークレットキーは、「cloudflare.com」から取得できます。

Turnstileのサイトキー・シークレットキー
こちらのセットアップ方法を参照してください。キーの取得手順は同じです。
下準備が済んだら、早速設定方法を見てみましょう。
設定方法(コピペで使えます)
以下のコードを、functions.phpもしくは「Code Snippets」などのプラグインに貼り付けてください。
コメント入力欄の上にTurnstileのウィジェットを表示し、送信時に認証を行うようにする記述です。
/* WordPress コメントフォーム用 Turnstile 対策 */
add_action( 'comment_form_after_fields', 'add_turnstile_to_comment_form' );
add_action( 'comment_form_logged_in_after', 'add_turnstile_to_comment_form' );
function add_turnstile_to_comment_form() {
// Turnstile 本体(ショートコードは使わず直書き)
?>
<div class="cf-turnstile" data-sitekey="ここにサイトキーをコピペ"></div>
<?php
}
/**
* コメントが使われるページでのみ Turnstile JS を読み込む
*/
add_action( 'wp_enqueue_scripts', function () {
if ( is_singular() && comments_open() ) {
wp_enqueue_script(
'cf-turnstile',
'https://challenges.cloudflare.com/turnstile/v0/api.js',
[],
null,
true
);
}
});
/**
* コメント送信前に Turnstile を検証
*/
add_filter( 'preprocess_comment', 'verify_turnstile_before_comment' );
function verify_turnstile_before_comment( $commentdata ) {
// 管理画面・XML-RPC 経由の投稿は対象外(必要に応じて)
if ( is_admin() || defined( 'XMLRPC_REQUEST' ) ) {
return $commentdata;
}
// Turnstile のレスポンスが無い場合は失敗
if ( empty( $_POST['cf-turnstile-response'] ) ) {
wp_die( '認証に失敗しました。もう一度お試しください。' );
}
// Cloudflare の Secret Key
$secret = 'ここにシークレットキーをコピペ';
$response = wp_remote_post(
'https://challenges.cloudflare.com/turnstile/v0/siteverify',
[
'body' => [
'secret' => $secret,
'response' => sanitize_text_field( $_POST['cf-turnstile-response'] ),
'remoteip' => $_SERVER['REMOTE_ADDR'] ?? '',
],
]
);
// 通信エラー時
if ( is_wp_error( $response ) ) {
wp_die( '認証サーバーに接続できませんでした。' );
}
$result = json_decode( wp_remote_retrieve_body( $response ), true );
// 検証失敗
if ( empty( $result['success'] ) ) {
wp_die( '認証に失敗しました。' );
}
return $commentdata;
}
正しく設定できたら、コメントフォームにTurnstileのウィジェットが表示されます。

Turnstileのウィジェットが表示されているコメントフォーム
正常に認証され、コメントを投稿できるかテストしておきましょう。
Turnstileの表示位置や見た目は、お使いのテーマによって異なる場合がありますが、デフォルトのままで問題ありません。
まとめ
WordPressのコメントフォームにも、Turnstileを使ったスパム対策を導入できます。
プラグインを追加せず、functions.phpにコードを貼り付けるだけで設定可能です。reCAPTCHAの代替としても使えるため、スパムコメントに悩んでいる場合は、ぜひ導入してみてください。
Contact Form 7のスパム対策も併せて行なうと、作業がスムーズです。
WordPressプラグイン「Contact Form 7」をお使いの場合、こんなメッセージが表示されていませんか? スパム対策として、reCAPTCHAを設定している方も多いと思いますが、無料枠を超過した場合、課金される可能性があるというものです。 Contact Form 7...
スパム対策のおすすめ記事
WordPressサイトにフォームを設置していると、スパム(迷惑メール)が飛んでくることがあります。 例えばこういうのです。 スパムを許すと、昼夜問わず何度も送信されてきて、正規ユーザーのお問い合わせが埋もれてしまうほど大量に届きます。対策が必要です。 スパムメールの主な特...
「Contact Form 7」を使っていると、スパムが届くことがあると思います。 ひらがなが含まれていない場合は送信拒否したり、画像添付を必須にすることで、ある程度対策できるかもしれません。 ただ最近は、巧妙にひらがなを混ぜて送信されるスパムも増えています。弊社サイトにも実際に海外から...
WordPressテーマ集











コメント