[WordPress技术] 无需插件实现拦截无中文或有日文垃圾评论

[复制链接]
查看: 386|回复: 0

10

主题

10

帖子

38

积分

新手上路

Rank: 1

积分
38
发表于 2021-1-7 10:01:00 | 显示全部楼层 |阅读模式
无需插件实现拦截无中文留言。下面的代码改自Some Chinese Please插件的核心内容,直接丢主题的functions.php就可以用。
  1. * refused spam */   
  2. function refused_spam_comments( $comment_data ) {   
  3. $pattern = '/[一-龥]/u';   
  4. if(!preg_match($pattern,$comment_data['comment_content'])) {   
  5. wp_die('评论必须含中文!');   
  6. }   
  7. return( $comment_data );   
  8. }   
  9. add_filter('preprocess_comment','refused_spam_comments');   
复制代码
PS:WordPress官方的防垃圾插件Akismet通过不断学习可以即时判断出是spam,但仍会将垃圾留言数据写入到数据库中,会消耗大量的资源,而且有时候误判率也高。所以还是别用它为妙。

拦截包含日文的评论代码:
  1. // 禁止日文评论
  2. function refuse_comment_jp_post( $incoming_comment ) {
  3. $jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
  4. if(preg_match($jpattern, $incoming_comment['comment_content'])){
  5. wp_die( "禁止有日文字符的评论 You should type some Chinese word" );
  6. }
  7. return( $incoming_comment );
  8. }
  9. add_filter('preprocess_comment', 'refuse_comment_jp_post');
复制代码
集合:拦截新读者无中文或有日文垃圾评论、禁止新用户黑名单关键词评论提交。
  1. // 拦截新读者无中文或有日文垃圾评论、禁止新用户黑名单关键词评论提交。登录用户不受影响。
  2. //如用ajax提交评论 需将 wp_die() 改成 ajax 错误提示函数 如 err。
  3. if ( !is_user_logged_in() ) {
  4.     function refused_spam_comments( $comment_data ) {
  5.         $pattern = '/[一-龥]/u';
  6.         $jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
  7.         $cau=$comment_data['comment_author'] ;
  8.                 $cem=$comment_data['comment_author_email'] ;
  9.                 $comment_data['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', "",$_SERVER['REMOTE_ADDR'] );
  10.                    $comment_data['comment_agent'] = isset($_SERVER['HTTP_USER_AGENT'] ) ? substr($_SERVER['HTTP_USER_AGENT'], 0, 254 ) : "";
  11.                 global $wpdb;
  12.         $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");
  13.             if(0 == $ok_to_comment){
  14.                 if(!preg_match($pattern,$comment_data['comment_content'])) { // 禁止无中文评论
  15.                     wp_die( __('Error: 评论必须含中文!You should type some Chinese word (like “你好”) in your comment to pass the spam-check!') );
  16.                 }
  17.                 else if(preg_match($jpattern, $comment_data['comment_content'])){  // 禁止日文评论
  18.                             wp_die( __('Error: 评论不能包含日文!') );
  19.                     }
  20.                     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'] )){
  21.                         wp_die( __('Error: 评论关键词或者IP黑名单!') );// 禁止黑名单提交评论
  22.                     }
  23.             }
  24.         return( $comment_data );
  25.     }
  26.     add_filter('preprocess_comment','refused_spam_comments');
  27. }
复制代码

腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )