在使用wordpress建站時,常常遇到被垃圾留言困擾,有些通過機器發垃圾留言,一發就是成百上千條,這個很煩人,因此,有些人干脆直接在wordpress網站上把留言評論功能給關閉了。

如果你的wordpress主題必須要使用留言評論,有一個辦法可以規避這個問題,即實現wordpress一篇文章只雞同一IP的人評論一次就可以。

將以下代碼添加到functions.php中

// 一篇文章只允許同一IP評論一次
//獲取評論用戶的ip,參考wp-includes/comment.php
function wdp_getIP() {
  $ip = $_SERVER['REMOTE_ADDR'];
  $ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $ip );
    
  return $ip;
}
function wdp_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 = '".wdp_getIP()."') LIMIT 0, 1;");
    if($bool)
      wp_die('留言已提交,請勿重復留言。<a href="'.get_permalink($commentdata['comment_post_ID']).'">點此返回</a>');
  }

  return $commentdata;
}
add_action( 'preprocess_comment' , 'wdp_only_one_comment', 20);