WordPress中实现每篇文章只允许用户评论一次

2019年5月29日00:51:01 发表评论 244
摘要

之前有网友提出,在WordPress中有没有办法实现每篇文章只允许用户评论一次?

暂不说这个需求有没有用,毕竟WordPress就是给有各种需求的人用的。这个功能实现起来也比较简单,只需每次用户发表的评论进数据库之前,从当前文章的所有评论中查找是否有相同的用户名或邮箱已经发表过评论,如果有就跳到错误页面即可。

 

WordPress中实现每篇文章只允许用户评论一次

 

代码部署

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

 

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

 

转自久伴博客

 

 

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如果喜欢,请打赏支持本站,谢谢大家!
  • 我的QQ
  • QQ扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: