无需插件实现拦截无中文或有日文垃圾评论

我这BLOG只是个自娱自乐的地方,要啥没啥,可是时不时被spam,真是烦人。

所以一直在用广受中国人民喜爱的 Some Chinese Please 插件,外加自带的黑名单。这插件可以直接拦截无中文的评论(无中文无法提交),而且不写数据库,可以减少大量的资源消耗。

当然,这插件也有缺点——只能拦截在前台填写表单提交的评论,对于其他更高级的spam就无能为力了。

转入正题吧——无需插件实现拦截无中文留言。下面的代码改自Some Chinese Please插件的核心内容,直接丢主题的functions.php就可以用。

* refused spam */    
function refused_spam_comments( $comment_data ) {
$pattern = '/[一-龥]/u';
if(!preg_match($pattern,$comment_data['comment_content'])) {
wp_die('评论必须含中文!');
}
return( $comment_data );
}
add_filter('preprocess_comment','refused_spam_comments');

PS:WordPress官方的防垃圾插件Akismet通过不断学习可以即时判断出是spam,但仍会将垃圾留言数据写入到数据库中,会消耗大量的资源,而且有时候误判率也高。所以还是别用它为妙。

拦截包含日文的评论代码:

// 禁止日文评论
function refuse_comment_jp_post( $incoming_comment ) {
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(preg_match($jpattern, $incoming_comment['comment_content'])){
wp_die( "禁止有日文字符的评论 You should type some Chinese word" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'refuse_comment_jp_post');

集合:拦截新读者无中文或有日文垃圾评论、禁止新用户黑名单关键词评论提交。

// 拦截新读者无中文或有日文垃圾评论、禁止新用户黑名单关键词评论提交。登录用户不受影响。
//如用ajax提交评论 需将 wp_die() 改成 ajax 错误提示函数 如 err。
if ( !is_user_logged_in() ) {
function refused_spam_comments( $comment_data ) {
$pattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
$cau=$comment_data['comment_author'] ;
$cem=$comment_data['comment_author_email'] ;
$comment_data['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', "",$_SERVER['REMOTE_ADDR'] );
$comment_data['comment_agent'] = isset($_SERVER['HTTP_USER_AGENT'] ) ? substr($_SERVER['HTTP_USER_AGENT'], 0, 254 ) : "";
global $wpdb;
$ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$cau' AND comment_author_email = '$cem' and comment_approved = '1' LIMIT 1");
if(0 == $ok_to_comment){
if(!preg_match($pattern,$comment_data['comment_content'])) { // 禁止无中文评论
wp_die( __('Error: 评论必须含中文!You should type some Chinese word (like “你好”) in your comment to pass the spam-check!') );
}
else if(preg_match($jpattern, $comment_data['comment_content'])){ // 禁止日文评论
wp_die( __('Error: 评论不能包含日文!') );
}
else if( wp_blacklist_check($comment_data['comment_author'],$comment_data['comment_author_email'],$comment_data['comment_author_url'], $comment_data['comment_content'], $comment_data['comment_author_IP'], $comment_data['comment_agent'] )){
wp_die( __('Error: 评论关键词或者IP黑名单!') );// 禁止黑名单提交评论
}
}
return( $comment_data );
}
add_filter('preprocess_comment','refused_spam_comments');
}

除非注明,沙唐桔文章均为原创,本文地址 https://cyhour.com/42/,转载时必须以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🔞:Netflix 奈飞 YouTube 合租免费节点Telegram 频道

优化 WordPress 评论回复通知邮件

用上 G Suite 后,域名邮箱自然也托管到 Google,Gmail 配合 Gmail SMTP 插件使用,还行。更改后回复评论提交速度巨慢,肯定与这个评论回复通知邮件有关。 原本使用 VPS Postfix 直接发送,虽然基本上会进垃圾邮件,但是回复评论提交速度很快。再次尝试使用 wp_schedule_single_event 延迟发送评论…

使用 rclone 将 Google Drive 文件同步至 OneDrive

前几天上了博友「灵尘居」的 Office 365 车,1T OneDrive 到手,手机照片一直喂 Google AI,挺方便的,以前还会同步一份到家里的垃圾西数 NAS,不过并不太自动,后来就懒得弄了。 Google 虽然是大厂,但是数据只有一份,还是怕怕,多一个备份不是坏事。苹果 iCloud 不错,但是贼贵,况且我只有一个…
浏览: 62 标签: 

尼康 D7100 中文使用说明书 高清 PDF 电子版免费下载

尼康 D7100 说明书是一份介绍详细尼康 D7100 单反官方教程,推荐购买了 D7100 单反博友下载保存参考,以便随时查看一些常用按键操作和使用技巧。 尼康 D7100 简介 尼康 D7100 搭载先进的对象捕捉性能和成像性能,能够忠实还原拍摄细节。高密度的 51 点自动对焦系统准确捕捉目标对象并进行跟踪,…

全网热门公共 BitTorrent Tracker 列表合集 加速BT下载

BT 下载速度取决于其他下载同一资源的用户上传速度。做种「指上传文件数据给其他 BT 用户的行为」用户越多,你的下载速度越快!如果资源没人提供上传,就会完全没有下载速度,而做种用户靠 Peer、DHT、Tracker 获得。 Tracker 是什么? BT 下载的文件都是其他用户上传给你的。 BT 下载速度…
浏览: 82 标签: 

Comments:4

  1. 这个不错,收下回头能嵌到主题就嵌进去

    2015.08.29 10:17 # 回复
    1楼
  2. 请教个问题,如果ajax提交评论用err函数,虽说可用,但会报调用未定义函数的错误,小白问下咋解决。😂

    2021.02.28 11:04 # 回复
    2楼
    • @简单生活 err 函数得自定义,一般 ajax 提交都会有类似函数:

      if(!function_exists('err')) :
      function err($a) {
      header('HTTP/1.0 500 Internal Server Error');
      header('Content-Type: text/plain;charset=UTF-8');
      echo $a;
      exit;
      }
      endif;
      2021.02.28 12:00 # 回复

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息