WordPress 实现文章只允许同一IP评论一次纯代码无插件

WordPress 是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用 PHP 语言和 MySQL 数据库开发的,用户可以在支持 PHP 和 MySQL 数据库的服务器上使用自己的博客。

WordPress 有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用 HTML 代码、CSS、PHP 等相关知识。
在使用 wordpress 建站时,常常遇到被垃圾留言困扰,有些通过机器发垃圾留言,一发就是成百上千条,这个很烦人,因此,有些人干脆直接在 wordpress 网站上把留言评论功能给关闭了。

如果你的 wordpress 主题必须要使用留言评论,有一个办法可以规避这个问题,即实现 wordpress 一篇文章只鸡同一 IP 的人评论一次就可以。

将以下代码添加到 functions.php 中:

  1. // 一篇文章只允许同一IP评论一次
  2. //获取评论用户的ip,参考wp-includes/comment.php
  3. function wdp_getIP() {
  4.  $ip = $_SERVER['REMOTE_ADDR'];
  5.  $ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $ip );
  6. 
    
  7.  return $ip;
  8. }
  9. function wdp_only_one_comment( $commentdata ) {
  10.  global $wpdb;
  11.  $currentUser = wp_get_current_user();
  12. 
    
  13.  // 不限制管理员发表评论
  14.  if(empty($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 = '".wdp_getIP()."') LIMIT 0, 1;");
  16.  if($bool)
  17.       wp_die('留言已提交,请勿重复留言。<a href="'.get_permalink($commentdata['comment_post_ID']).'">点此返回</a>');
  18.  }
  19. 
    
  20.  return $commentdata;
  21. }
  22. add_action( 'preprocess_comment' , 'wdp_only_one_comment', 20);
本站资源均来源于网络或网友投稿,部分资源未经测试,难免存在BUG,所有资源只限于学习研究,不得商用。如使用本站下载的资源造成任何损失或发生侵权行为,均与本站无关。如不接受本声明请勿下载!本站资源如有侵权,请联系QQ:497149677核实后立即删除!
最客资源网 » WordPress 实现文章只允许同一IP评论一次纯代码无插件