SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【WordPress】JavaScriptの作動しない環境からのコメントを拒否する

問題

スパムコメントって多いですよね。

コメント書き込みロボットでいきなりPOSTしてくるタイプを防いでみようと思うのですが、JavaScriptの作動しない環境からのコメントを拒否する仕掛けなんて作れますか?

wordpress

答え

コメントフォームのsubmitイベントで、JavaScriptで何らかの値をセットして、その値が送信されてこないとコメントを受け付けない仕組みを作ってみた。

1、コメントフォームにhiddenの項目を追加

nameは適当。スパムチェックっぽい名前を付けた。

<input type="hidden" name="spmc" value="">

2、コメントフォームにJavaScriptの仕掛けを入れる

ページのどこかか、外部JSファイルのどこかに以下を追加。

コメント送信フォームのsubmitイベントで1のhiddenのinputに値をセットしている。

$(function(){
    $('#commentform').on('submit', function(){this.spmc.value='1';});
});

3、コメント処理前のフックでチェックする

テーマファイルの functions.php などに、以下を追記。

function my_custome_spam_filter($comment_post_ID)
{
	$spmc = (isset($_POST['spmc']) ? trim($_POST['spmc']) : null);
	if ($spmc !== '1') {
		wp_die('エラーです。');
	}
}
add_action('pre_comment_on_post', 'my_custome_spam_filter');

以上で、JavaScriptが動かない環境からコメントをするとエラー扱いする。

関連するメモ

コメント