>  기사  >  백엔드 개발  >  WordPress에서는 관리자가 아닌 사용자가 Article_php 팁 이후에 한 번만 댓글을 달 수 있도록 제한합니다.

WordPress에서는 관리자가 아닌 사용자가 Article_php 팁 이후에 한 번만 댓글을 달 수 있도록 제한합니다.

WBOY
WBOY원래의
2016-05-16 20:01:101004검색

이전에 일부 네티즌들이 질문했는데, 워드프레스에서 각 기사에 대해 사용자가 한 번만 댓글을 달 수 있도록 하는 방법이 있나요?

이 요구 사항이 유용한지 아닌지는 말하지 않겠습니다. WordPress는 다양한 요구 사항을 가진 사람들을 위한 것입니다. 이 기능은 구현하기가 비교적 간단합니다. 동일한 사용자 이름이나 이메일 주소가 이미 댓글을 게시했는지 확인하려면 현재 기사의 모든 댓글만 검색하면 됩니다.

코드를 구현하려면 현재 테마의 function.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('本站每篇文章只允许评论一次。<a href="'.get_permalink($commentdata['comment_post_ID']).'">点此返回</a>');
 }
 
 return $commentdata;
}
add_action( 'preprocess_comment' , 'ludou_only_one_comment', 20);

관리자가 작성할 수 있는 댓글 수에는 제한이 없으므로 사용자가 관리자인지 확인하는 방법을 살펴보겠습니다.

지정된 아이디를 가진 사용자가 관리자인지 확인

이 요구사항은 단 몇 줄의 코드만으로 구현이 가능합니다.

function ludou_is_administrator($user_id) {
 $user = get_userdata($user_id);
 if(!empty($user->roles) && in_array('administrator', $user->roles))
  return 1; // 是管理员
 else
  return 0; // 非管理员
}

현재 로그인한 사용자가 관리자인지 확인

현재 로그인한 사용자가 관리자인지 확인하려면 다음 기능을 사용하면 됩니다.

function ludou_is_administrator() {
 // wp_get_current_user函数仅限在主题的functions.php中使用
 $currentUser = wp_get_current_user();

 if(!empty($currentUser->roles) && in_array('administrator', $currentUser->roles)) 
  return 1; // 是管理员
 else
  return 0; // 非管理员
}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.