コメントの「ウェブサイト」止めました

コメントの「ウェブサイト」止めました - あまりにもスパムコメントがしつこいので

説明

とあるサイトのスパムコメントが多く、その都度のスパム指定するのが面倒である。これまでいくつか対策を行ってきたが、そういった対応にもいい加減うんざりしてきたので、試験的に「ウェブサイト」を無効化しようと思った。

これまでの対策によりコメント本文にURLが書かれることはほとんどなくなり、現状は「ウェブサイト」を指定し、「名前(コメント投稿者名)」をリンクにするケースが主流となっている。「名前」が特定の商品やサービス名なので、これでも十分なのだろう。こんな状況を踏まえ、試験的に「ウェブサイト」を入力しても登録されないようにすることにした。

コメント投稿時に投稿内容に対して何等かの処理を行う場合は、'pre_comment_on_post'アクションが利用できる。テーマのfunctions.phpに記述するなら次のような感じだ。

add_action( 'pre_comment_on_post', 'url_is_excepted' );

function url_is_excepted( $post_id ) {
	$_POST['url'] = '';
}

これで無条件にURLをクリアされ、名前にリンクが付くことはなくなる。一般的なサイトで利用する場合は過去のコメント情報を検索して有効なURLはクリアしないようにするといった工夫が必要だと思うが、今回は試験的なのでこれで運用して、相手の出方を見てみよう。

フォームも変更

対応した昨夜、再度スパムコメントが投稿されていた。彼らは、投稿内容を確認しないのかもしれない。しかたないので、今度はコメントフォームの「ウェブサイト(URL)欄」を非表示にしてみようと思う。

WordPress標準のコメント投稿フォームは、フォーム拡張用として'comment_form'アクションを実行する。このアクションを利用して、JavaScriptで「ウェブサイト(URL)欄」のinputタグのtype要素をhiddenに変更し、labelタグを非表示にしてみた。

add_action( 'comment_form', 'url_is_hidden' );
function url_is_hidden( $post_id ) {
?>
<script type='text/javascript'>
/* <![CDATA[ */
( function($) {
	$(document).ready( function() {
		$( 'input[name=url]' ).attr( 'type', 'hidden' );
		$( 'label[for=url]' ).hide();
	} );
} )( jQuery );
/* ]]> */
</script>
<?php
}

人力でスパムコメントを投稿しているなら、これで対処できると思う。相手が半自動化したボット類の場合は、別の対応を考えないとね。

関連

  • add_action - アクション関数を追加する

お勧めコンテンツ

the_title_attribute(2009年11月12日 登録)

string the_title_attribute ( [ mixed $args = '' ] )
投稿情報のタイトルをパラメータ$argsのecho要素がtrue(デフォルト)ならば表示する。echo要素がfalseの場合は表示せず、取得する。なお、タイトルおよびパラメータ$argsのbefore、after要素にHTMLタグが含まれる場合はそれらを除去される。

next_post_link(2009年11月30日 登録)

void next_post_link( [ string $format = '%link &raquo;' [ , string $link = '%title' [ , bool $in_same_cat$in_same_term = false [ , mixed $excluded_categories$excluded_terms = '' [ , string $taxonomy = 'category' ] ] ] ] ] )
次の投稿ページのリンクを表示する。

the_custom_logo(2016年5月22日 登録)

void the_custom_logo( [ int $blog_id = 0 ] )
カスタムロゴを表示する。

wp_convert_hr_to_bytes(2016年8月17日 登録)

int wp_convert_hr_to_bytes( string $value )
バイト数を示すテキストを数値に変換する。

comment_id_fields(2014年10月8日 登録)

void comment_id_fields( [ int $id = 0 ] )
コメント投稿フォームの隠しフィールドを出力する。

最終更新日時 : 2014-04-15 13:12