これまで、様々なスパムコメント対策を試してきました。その中で簡単で効果のあったものを紹介したいと思います。
まず、スパムコメント対策といえば真っ先に思いつくのは、Akismet プラグインでしょうか。WordPress に同封されていることもあり利用されている方も多いのではないでしょうか。ただ、Akismet プラグイン等の外部サービスを利用(WordPress.com API キーが必要)するものは、なるべく使用したくないという人(私)もいるのではないでしょうか。
そんな方のために、外部サービスを利用せず、プラグインも使用しない方法を紹介します。
日本語を含まないコメントを拒否
コメントに日本語が含まれていない場合、コメントを拒否する方法です。
これは、このサイトでも行っている対策のひとつなのですが、効果は絶大で導入後の数年で一件のスパムもありません(極貧ブログなので参考にはなりませんが・・・)。
この方法は既に多くのサイトで紹介されているので、敢えてここで紹介するほどのことでもないのですが、いちおう紹介しておきます。
判定方法は、コメントにひらがなが一文字も含まれていない場合をスパムとして拒否する方法です。
/**
* 日本語(ひらがな)を含まないコメントを拒否します。
*/
function my_pre_comment_on_post_japanese( $comment_post_ID ) {
if ( isset( $_POST['comment'] ) && !preg_match( "/[ぁ-ん]+/u", $_POST['comment'] ) ) {
wp_die( '<strong>エラー</strong>: 日本語でコメントを入力してください。', 'エラー', array( 'back_link' => true ) );
}
}
add_action( 'pre_comment_on_post', 'my_pre_comment_on_post_japanese' );
コメントフォームにメッセージを追加
コメント欄の下にメッセージを追加する場合は下記のコードになります。
/**
* コメント欄の下にメッセージを追加します。。
*/
function my_comment_form_defaults_japanese( $args ) {
$args['comment_notes_after'] = '<p>日本語でコメントを入力してください。</p>' . $args['comment_notes_after'];
return $args;
}
add_action( 'comment_form_defaults', 'my_comment_form_defaults_japanese' );
最後に
この方法では、当然なのですが日本語のスパムコメントはスルーされてしまいます。
日本語のスパムコメント対策は、次回!
次回は、JavaScript が無効な場合にコメントを拒否する方法を紹介したいと思います。