最新公告
  • 欢迎您光临DT模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • WordPress中实现每篇文章只允许用户评论一次


    以前有网友提起,在WordPress中有什么方法实现每篇文章只允许用户评论一次?
    暂不说这种需求有什么用,毕竟WordPress就是给有各种各样需求的人用的。这种功能实现起来也非常简单,只需每一次用户发表的评论进数据库之前,从当前文章的所有评论中查找是否有同样的用户名或邮箱已经发表过评论,如果有就自动跳转错误页面即可。
    实现代码,放到当前主题的functions.php中即可(这里还增加了对IP的判断,更保险):

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

     

    DT模板网上源码供源码爱好者(站长)学习研究使用。借鉴职业开发人员的代码写法,快速提升自己。部分源码需以前VIP用户分享,VIP费用供我们用来买源码,服务器开支。源码具有可复制性,部分源码被不断分享出去,但源码本身的性质不变,仅供本地环境下学习研究使用,如果你直接拿来做站,又做了违法违规的网站,请自行承担一切法律后果。
    DT模板网 » WordPress中实现每篇文章只允许用户评论一次

    发表评论

    • 3563会员总数(位)
    • 744资源总数(个)
    • 2本周发布(个)
    • 0 今日发布(个)
    • 591稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情