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

我这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/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

使用 WordPress 内置 XML Sitemaps 替换 Google XML Sitemaps

内容是王道,但是有时候酒香也怕巷子深,向搜索引擎提交 sitemap 是快速提高网站收录的最好方法之一。老头一直使用 Google XML Sitemaps 插件自动生成 sitemap.xml 站点地图。 WordPress 5.5 版本起 内置 sitemap 功能 WordPress 5.5 版本之后,核心代码已经内置 XML Sitemaps 功能,只要访问:…

WordPress 5.0+ 禁用 Gutenberg & WordPress 5.8+ 禁用 Widget 块编辑器

2018.12.06,WordPress 5.0 发布,代号 Bebo。最大的亮(黑)点就是正式引入新的基于块(block-based)的编辑器 —— Gutenberg 编辑器,以及新的默认主题 —— Twenty Nineteen。 WordPress 5.0+ 禁用 Gutenberg 编辑器 第一时间升级,打开文章编辑,一股说不出的杯具感在心头……变化太大,心累…
浏览: 91 标签:  ,  ,  , 

Adobe Flash Player 去helper(Win10 完美恢复)

Adobe 在2020年12月31日后将不再支持 Adobe Flash Player,从2021年1月12日开始,阻止 Flash 内容在 Flash Player 中运行。截图 虽然不喜欢 Adobe Flash Player,但是有些网站目前仍然离不开 Adobe Flash Player,过渡解决方法是:安装中国特供版 Adobe Flash Player 或者安装网友修改 Adobe Flash…

升级新版 Google AdSense 代码提升广告效果

2021年7月19日,Google AdSense 最近发布了新版 AdSense 代码。通过新版 AdSense 代码,AdSense 可以更早触发优化功能,从而提升网站上广告效果。新广告代码适用于自动广告和广告单元。 如何获取 Google AdSense 新版代码? 无需采取任何措施。在下次登录 AdSense 后,您将拥有对新广告代码的访…
浏览: 78 标签: 

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信息