총 사용자 수를 제한하는 방법

회사 내부용으로 사용할 사이트 제작을 검토중에 있습니다.

내부 사용자들만 사용가능하게 여러가지 방법을 생각하고 있는데

가입이 가능한 총 사용자 수를 제한하는 방법을 찾아보아도 못찾겠네요

 

관리자만 워드프레스에 가입할 수 있는 사용자의 수를 조정할 수 있고

편집자나 나머지 역할들은 관리자가 설정해 놓은 사용자 가입 제한 수의 범위 내에서만

사용자를 추가하거나 삭제할 수 있는 방법이 필요한 상황입니다.

 

도움부탁드리겠습니다..

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    워드프레스 사이트에서 회원가입 시 회원 수를 제한하시려면

    아래 관련 링크들을 참고해보시겠어요?

    https://wordpress.stackexchange.com/questions/110036/limiting-the-number-of-users

    https://www.idiotinside.com/2014/12/03/limit-number-of-users-registered-in-a-wordpress-website/

    고맙습니다.

  • 알려주신 코드를 사용하여 WP-Members으로 테스트를 하였을때 워드프레스 사용자로 추가가 되지 않았습니다.

    하지만, 현재 사용하고 있는 플러그인이 다른 것이라서

    마지막에 알려주신 WP-Members 경우의 

    코드 훅을 변경하여 테스트 하였습니다.

     ㄴ 플러그인이 다르다 보니 아무 동작을 하지 않았습니다.

     

    테스트는

    기존 코드와 추가코드 2개를 함께 등록하였습니다.

    기존 코드

    add_action('check_passwords' ,'my_check_passwords', 10, 3);
    function my_check_passwords($user_login, $pass1, $pass2){
    	$users = get_users();
    	$count = count($users);
    	
    	$user = new WP_User($user_login);
    	
    	if($count >= '1' && !$user->ID){
    		echo "<script>alert('더 이상 가입할 수 없습니다.')</script>";
    		echo "<script>window.history.back();</script>";
    		exit;
    	}
    }

     

     

    WP-Members를 사용하였을 경우의 코드를 변경

    add_action('user_register', 'wpmem_pre_register_data_2020_03_02', 10, 1);
    function wpmem_pre_register_data_2020_03_02($user_id){
    	$users = get_users();
    	$count = count($users);
    	
    	if($count >= '1'){
    		echo "<script>alert('등록이 가능한 회원 수를 초과 하였습니다.')</script>";
    		echo "<script>window.history.back();</script>";
    		exit;
    	}
    }

     

    wpmem_pre_register_data 변경 > user_register

    $post_data 변경 > $user_id

     

    user_register 후크를 사용하였을 경우 

    '등록이 가능한 회원 수를 초과 하였습니다.' 의 메세지가 출력되었습니다.

     

    하지만, 여전히 

    워드프레스 사용자에 추가가 되는 상황입니다.

     

    혹시나 해서 register_post 도 사용하여 테스트 하였으나, 

    메세지 조차도 나오질 않았습니다.

     

    정확하게 사용하는 방법을 모르다보니

    테스트 조차도 제대로 한 것인지 확실하지 않습니다.

     

    액션과 필터 후크를 공부하고 있으나 너무 어렵네요

     

     

  • 안녕하세요.

    이전 댓글에 안내해드린 check_passwords 액션이

    워드프레스 관리자 페이지에서만 동작한다면

    일반 페이지에서도 동작하는 코드도 추가해주셔야 할 듯합니다.

    WP-Members 플러그인을 사용 중이시라면

    wpmem_pre_register_data 액션을 활용해서 회원가입 전에 코드를 추가하고 실행되게 하실 수 있습니다.

    예제 코드는 아래와 같습니다.

    add_action('wpmem_pre_register_data', 'wpmem_pre_register_data_2020_03_02', 10, 1);
    function wpmem_pre_register_data_2020_03_02($post_data){
    	$users = get_users();
    	$count = count($users);
    	
    	if($count >= '10'){
    		echo "<script>alert('더 이상 가입할 수 없습니다.')</script>";
    		echo "<script>window.history.back();</script>";
    		exit;
    	}
    }

    고맙습니다.

  • 테스트중에 문제가 있어서 다시 질문을 드리게 되었습니다.

    워드프렛 어드민 사용자 추가에서는 잘 동작합니다.

    회원가입 플러그인이나 회원과 관련된 플러그인들에서 

    회원을 추가하는 경우에는 위 코드가 동작하지 않고 

    그냥 바로 등록이 됩니다...

     

    어드민이든지 프론트에서든지 제한한 가입자의 수가 넘을 경우에

    무조건 사용자를 추가할 수 없도록 하려면 어떻게 해야 할까요?

     

  • 정상적으로 작동을 합니다..

    감사합니다..

  • 안녕하세요.

    기존에 추가하신 코드 대신

    아래의 코드로 교체해서 확인해보시겠어요?

    add_action('check_passwords' ,'my_check_passwords', 10, 3);
    function my_check_passwords($user_login, $pass1, $pass2){
    	$users = get_users();
    	$count = count($users);
    	
    	$user = new WP_User($user_login);
    	
    	if($count >= '1' && !$user->ID){
    		echo "<script>alert('더 이상 가입할 수 없습니다.')</script>";
    		echo "<script>window.history.back();</script>";
    		exit;
    	}
    }

    고맙습니다.

  • 위 코드를 적용하여 테스트를 진행하였습니다.

    가입을 제한하는 부분은 잘 동작합니다.

    그런데, 제한한 사용자의 수가 풀이 되어 가입할 수 없는 경우에

    회원의 정보를 수정하고 사용자 업데이트를 하면

    "더 이상 가입할 수 없습니다." 메세지가 나오며 수정한 부분이 업데이트가 되질 않습니다.

     

     

  • 알려주신 코드로 해결되었습니다.

    새해복 많이 받으시고 좋은일만 있으실기 바랍니다..

     

    감사합니다.

     

  • 안녕하세요.

    check_passwords 액션을 활용해보시는 건 어떨까 합니다.

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_action('check_passwords' ,'my_check_passwords', 10, 3);
    function my_check_passwords($user_login, $pass1, $pass2){
    	$users = get_users();
    	$count = count($users);
    	
    	if($count >= '10'){
    		echo "<script>alert('더 이상 가입할 수 없습니다.')</script>";
    		echo "<script>window.history.back();</script>";
    		exit;
    	}
    }

    위의 코드에서 10 부분은 제한하려는 회원 수로 적용해보세요.

    고맙습니다.

  • 답변해 수셔서 감사합니다.

     

    링크한 정보를 사용하여 테스트한 결과..

    프론트에서는 적용하려는 것처럼 등록할 수 있는 사용자의 제한 수를 넘을 경우 회원가입 버튼이 숨겨지고, 남아 있으면 나타났습니다.

    그런데, 어드민에서는 수동으로 관리자 또는 편집자 등 사용자를 추가할 수 있는 역할의 회원이

    사용자를 등록할 수 있는 제한의 수를 넘었는데도 여전히 사용자를 추가할 수 있습니다.

     

    사용자를 등록할 수 있는 제한의 수를 초과한 경우 관리자 이외의 역할의 사용자에게는 

    사용자를 등록할 수 없도록 하고, 안내 메세지를 보여지게 하려는 것이 적용하려는 기능이었습니다.

    이부분 어렵거나, 까다롭다면 등록할 수 있는 사용자의 제한 수를 초과한 경우

    사용자 추가 버튼을 비활성 시키고 제한 수가 아직 남아 있을경우만 활성화 시키는 방법도 괜찮을 것 같아서 

    " wp_create_user " 코드와  'user-new.php' 파일을 사용하여 비활성 코드를 만들어 보려했는데..

    지식이 짧아 헤매기만 했네요..

    도움 부탁드리겠습니다...

     

  • 안녕하세요.

    wpmem_pre_register_data 액션은

    워드프레스 사용자가 등록되기 전에 실행됩니다.

    user_register 액션은 워드프레스 사용자가 등록된 후 실행되기 때문에

    user_register 액션을 활용하시면 등록이 되기 전에 체크하실 수 없습니다.

    그렇기 때문에 wpmem_pre_register_data 액션을 활용하시거나

    user_register 액션을 활용하실 경우 워드프레스 사용자를 등록한 후

    제한 수가 넘으면 등록된 유저를 삭제하는 방향으로 진행을 하셔야 할 듯합니다.

     

    wpmem_pre_register_data 액션에 대한 자세한 내용은

    아래의 링크를 참고해보세요.

    https://rocketgeek.com/plugins/wp-members/docs/filter-hooks/wpmem_pre_register_data/

     

    user_register 액션에 대한 자세한 내용은

    아래의 링크를 참고해보세요.

    https://developer.wordpress.org/reference/hooks/user_register/

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기