【WordPress】不要なコメントを登録しないようにする
問題
WordPressのディスカッションの設定で、「n個以上のリンクを含んでいる場合は承認待ちにする」の設定はあるけど、リンクたっぷりのコメントを拒否する設定はできないの?
承認待ちやゴミ箱に、不要なコメントがたまるのがいやだ。
解答例
適当なフックを使って、明らかに迷惑コメントだと判断したものは、登録ができないようにする例。
フックは pre_comment_on_post を使った。
/**
* My Custome SPAM Filter
*
* コメントの内容($_POST['comment'])などを見て相手にしたくないコメントに対してはwp_die()する
*/
function my_custome_spam_filter($comment_post_ID)
{
$comment = (isset($_POST['comment']) ? trim($_POST['comment']) : null);
$author = (isset($_POST['author']) ? trim(strip_tags($_POST['author'])) : null);
$email = (isset($_POST['email']) ? trim($_POST['email']) : null);
$url = (isset($_POST['url']) ? trim($_POST['url']) : null);
// URLが5つ以上含まれたら却下
if (substr_count($comment, 'http://') >= 5) {
wp_die('URLが多すぎます');
}
}
add_action('pre_comment_on_post', 'my_custome_spam_filter');
下のような迷惑コメントは入ってこなくなる思います。

まじ神