WordPress 的垃圾评论是个比较头疼的事情,本站一开始就开启了屏蔽全英文的评论内容,后来发现全英文是不可能出现了,但是发现却出现了全日文,晕死!然后继续屏蔽全日文,效果好了不少!今天,继续增强垃圾评论防御能力,添加人机验证码,用的是比较简单的数学算术,不需要太复杂,能防机器就行了。虽然有相关的插件,但不建议使用,因为代码本身就很简单。

  将下面的代码添加到主题的 functions.php 文件:

function spam_protection_math(){
	$num1=rand(0,9);
	$num2=rand(0,9);
	echo "<label for=\"math\">人机验证:<i>$num1 + $num2 = ?</i> </label>\n ";
	echo "<input type=\"text\" name=\"sum\" class=\"text\" value=\"\" size=\"25\" tabindex=\"4\">\n";
	echo "<input type=\"hidden\" name=\"num1\" value=\"$num1\">\n";
	echo "<input type=\"hidden\" name=\"num2\" value=\"$num2\">";
}
function spam_protection_pre($commentdata){
	$sum=$_POST['sum'];
	switch($sum){
		case $_POST['num1']+$_POST['num2']:
		break;
		case null:
		wp_die('对不起: 请输入验证码。<a href="javascript:history.back(-1)">返回上一页</a>','评论失败');
		break;
		default:
		wp_die('对不起: 验证码错误,请<a href="javascript:history.back(-1)">返回</a>重试。','评论失败');
	}
	return $commentdata;
}
if($comment_data['comment_type']==''){
	add_filter('preprocess_comment','spam_protection_pre');
}

  然后在主题的评论文件相关位置添加以下代码,一般在 comments.php 文件中,是不是很简单?