又一法阻止垃圾评论,原理很简单,前台Js添加一个隐藏域,并添加一个值,提交表单时检验该值是否存在来判断是否是垃圾评论。
以下代码塞主题function.php里,
//垃圾评论校验
function preprocess_comment_spam($commentdata){
//管理员直接通过
if (is_admin()) {
return $commentdata;
}
//不包含英文拒绝
if(!preg_match('/[一-龥]/u',$commentdata['comment_content'])){
wp_die('错误:评论内容必须包含中文。');
}
//校验码错误拒绝
if (!empty($_POST['comment_auth']) && $_POST['comment_auth'] == md5('E5X14f'.date("Y-/#/n"))) {
return $commentdata;
}else{
wp_die('错误:您必须启用Javascritp才能发表评论。');
}
}
add_action('preprocess_comment', 'preprocess_comment_spam');
以下是放在表单区域的,引入jQuery库和MD5的库。
//comment_spam
$("#commentform").submit(function () {
if ($("input#comment_auth").length==0) {
var auth_date = new Date();
var auth_key = $.MD5("E5X14f"+auth_date.getFullYear()+"-/#/"+(auth_date.getMonth()+1));
var auth = "<input id="comment_auth" name="comment_auth" type="hidden" value=""+auth_key+"" />";
$(this).append(auth);
};
});