现在的位置:首页>wordpress>正文

如何设置让WordPress用户每篇文章评论一次

2016年07月31日 ⁄ 共 2018字 评论 3 条

这是部落刚刚在露兜博客上看到的一篇文章,方法的话,算是不错的,最主要的是,这样的功能有没有作用?很多朋友说是没有实际作用.这个主要看个人的博客是用来做什么用途了,反正部落觉得如果是用来防止垃圾评论的话,肯定意义不大.因为让WordPress用户每篇文章评论一次的话,他还可以找其它的文章.

这个功能实现起来也比较简单,只需每次用户发表的评论进数据库之前,从当前文章的所有评论中查找是否有相同的用户名或邮箱已经发表过评论,如果有就跳到错误页面即可.当然,这里部落补充一下,是通过记录的IP地址进行操作的.

这样的话,也就是说,如果对方使用VPN之类的,是禁止不到的.

如何设置让WordPress用户每篇文章评论一次

实现代码,放到当前主题的functions.php中即可(这里还增加了对IP的判断,更保险):

  1. // 获取评论用户的ip,参考wp-includes/comment.php  from www.mfbuluo.com   
  2. function ludou_getIP() {   
  3.   $ip = $_SERVER['REMOTE_ADDR'];   
  4.   $ip = preg_replace( '/[^0-9a-fA-F:., ]/', ''$ip );   
  5.        
  6.   return $ip;   
  7. }   
  8.   
  9. function ludou_only_one_comment( $commentdata ) {   
  10.   global $wpdb;   
  11.   $currentUser = wp_get_current_user();   
  12.      
  13.   // 不限制管理员发表评论   
  14.   if(emptyempty($currentUser->roles) || !in_array('administrator', $currentUser->roles)) {   
  15.     $bool = $wpdb->get_var("SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = ".$commentdata['comment_post_ID']."  AND (comment_author = '".$commentdata['comment_author']."' OR comment_author_email = '".$commentdata['comment_author_email']."' OR comment_author_IP = '".ludou_getIP()."') LIMIT 0, 1;");   
  16.      
  17.     if($bool)   
  18.       wp_die('本站每篇文章只允许评论一次。<a href="'.get_permalink($commentdata['comment_post_ID']).'">点此返回</a>');   
  19.   }   
  20.      
  21.   return $commentdata;   
  22. }   
  23. add_action( 'preprocess_comment' , 'ludou_only_one_comment', 20);  

这里部落再补充一下,WordPress中判断用户是不是管理员的几个方法,在这段代码中是可能会用到的:

1.判断当前登录用户是不是管理员

如果是判断当前登录用户是不是管理员,可以使用下面的函数:

  1. function ludou_is_administrator() {   
  2.   // wp_get_current_user函数仅限在主题的functions.php中使用 from www.mfbuluo.com   
  3.   $currentUser = wp_get_current_user();   
  4.   
  5.   if(!emptyempty($currentUser->roles) && in_array('administrator', $currentUser->roles))    
  6.     return 1;  // 是管理员   
  7.   else  
  8.     return 0;  // 非管理员   
  9. }  

2.判断指定id的用户是不是管理员

  1. function ludou_is_administrator($user_id) {   
  2.   $user = get_userdata($user_id);   
  3.   if(!emptyempty($user->roles) && in_array('administrator', $user->roles))   
  4.     return 1;  // 是管理员 from www.mfbuluo.com   
  5.   else  
  6.     return 0;  // 非管理员   
  7. }  

小结

文章内容来源自露兜博客,由免费部落整理发布.

这样的功能,估计很多朋友是用不上的,需要的朋友可以试一下.

评论 3 条 评论内容很精采,有内幕,而且绝对有干货

  1. 卢松松博客 2016年08月01日 23:07  @回复  Δ-49楼 回复

    不错,看完这个收获很大。

  2. 成都串串香加盟 2016年08月02日 16:33  @回复  Δ-48楼 回复

    看完这个收获很大

  3. 我爱动感单车网 2016年08月03日 10:59  @回复  Δ-47楼 回复

    我个人觉得,这个没什么必要!

给我留言