이전에 일부 네티즌들이 질문했는데, 워드프레스에서 각 기사에 대해 사용자가 한 번만 댓글을 달 수 있도록 하는 방법이 있나요?
이 요구 사항이 유용한지 아닌지는 말하지 않겠습니다. 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; // 非管理员 }