코스모스팜 스레드

워드프레스 로그인한 사용자 정보 가져오기

안녕하세요!

지금 작업하는 홈페이지는 거의 마무리 단계에 있는데 음... 

홈페이지 로그인을 한 모든 사용자의 정보를 가져와서 페이지에 출력을 해주어야 하는데요.

페이지 좌측의 2/3는 컨텐츠 표시 영역이구요. 우측 1/3영역은 현재 홈페이지에 로그인한 사용자의

로그인 아이디를 표시해주어야 합니다.

이러한 기능을 워드프레스에서 구현이 가능할까요? 

구현이 가능하다면 어떠한 방법을 해야 할가요.

주말에 wp_get_current_user()를 사용하면 내 정보는 가져와 지는데요

다른사람의 정보를 가져올 수 있는 방법이 있을가요

다시한번 도움 요청합니다.

코스모스팜 회원관리
코스모스팜 회원관리
  • 안녕하세요~^^

    간단하게 예제 코드를 만들어 봤습니다.

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

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

    add_action('after_switch_theme', 'my_after_setup_theme');
    function my_after_setup_theme(){
    	$current_user = wp_get_current_user();
    	update_option('my_logged_in_users', [ $current_user->ID => $current_user->user_login ], '', 'no');
    }
    
    add_action('wp_login', 'my_wp_login', 10, 2);
    function my_wp_login($user_login, $user){
    	$logged_in_users = get_option('my_logged_in_users');
    	if(!in_array($user->user_login, $logged_in_users)){
    		$logged_in_users[ $user->ID ] = $user->user_login;
    		update_option('my_logged_in_users', $logged_in_users, '', 'no');
    	}
    }
    
    add_action('wp_logout', 'my_wp_logout');
    function my_wp_logout(){
    	$current_user = wp_get_current_user();
    	$logged_in_users = get_option('my_logged_in_users');
    	if(in_array( $current_user->user_login, $logged_in_users )){
    		unset($logged_in_users[ $current_user->ID ]);
    		update_option('my_logged_in_users', $logged_in_users, '', 'no');
    	}
    }

    위의 코드를 적용하신 후에 테마를 다른 걸로 바꿨다가 다시 활성화해주세요.

    표시는 아래의 코드를 적절하게 활용하시면 됩니다.

    add_action('init', 'my_init');
    function my_init(){
    	$logged_in_users = get_option('my_logged_in_users');
    	print_r($logged_in_users);
    }

    고맙습니다.

  • 안녕하세요~^^

    get_userdata() 함수를 사용하시면 사용자 ID값으로 해당 사용자의 정보를 가져올 수 있습니다.

    보통 로그인한 내 정보를 표시해주시려면 wp_get_current_user() 함수를 사용하는 것으로도 충분할 듯합니다.

    확인 해보시겠어요?

    고맙습니다.

  • 자식 테마의 functions.php 파일에 아래처럼 추가해보시겠어요?

    add_action('after_switch_theme', 'my_after_setup_theme');
    function my_after_setup_theme(){
    	$current_user = wp_get_current_user();
    	update_option('my_logged_in_users', [ $current_user->ID => $current_user->user_login ], '', 'no');
    }
    
    add_action('wp_login', 'my_wp_login', 10, 2);
    function my_wp_login($user_login, $user){
    	$logged_in_users = get_option('my_logged_in_users');
    	if(!in_array($user->user_login, $logged_in_users)){
    		$logged_in_users[ $user->ID ] = $user->user_login;
    		update_option('my_logged_in_users', $logged_in_users, '', 'no');
    	}
    }
    
    add_action('wp_logout', 'my_wp_logout');
    function my_wp_logout(){
    	$current_user = wp_get_current_user();
    	$logged_in_users = get_option('my_logged_in_users');
    	if(in_array( $current_user->user_login, $logged_in_users )){
    		unset($logged_in_users[ $current_user->ID ]);
    		update_option('my_logged_in_users', $logged_in_users, '', 'no');
    	}
    }
    
    add_action('init', 'my_init');
    function my_init(){
    	$logged_in_users = get_option('my_logged_in_users');
    	print_r($logged_in_users);
    }

    위 코드는 테마가 바뀔 때 적용이 되기 때문에 코드를 입력하신 후에

    다른 테마로 바꿨다가 다시 원래 테마로 적용하신 후에 확인해보시겠어요?

    위의 코드는 말씀드린 것처럼 예제 코드이기 때문에

    원하시는 방향으로 프로그램을 짜기 위해서는

    어느 정도 프로그래밍 지식이 있어야 할 듯합니다.

    고맙습니다.

  • 차일드 테마는 avada에서 기본으로 제공해주는것으로 사용을 하고 있구요. 그리고 child theme 안에 있는 functions.php 파일 최 상단에 <?php 있습니다.

    위의 내용을 어디에서 어떻게 적용을 하면 되는지.... 자세하게 알려주시면 좋겠습니다. 제가 php 를 많이 아는것이 아니라 그저 그런 초보수준이라.... 

    감사합니다.

  • 안녕하세요.

    자식 테마의 functions.php 파일 상단에

    <?php 코드를 추가해주셨는지요?

    자식 테마 만드는 방법은

    아래의 링크를 참고해보시면 도움이 될 듯합니다.

    https://wpbox.kr/wordpress-manual/using-child-theme/

    고맙습니다.

  • 사용하는 테마 avada child function.php파일에 입력한 뒤에 알려주신대로 다른 테마를 선택한 뒤에 다시 avada child를 활성화 한 뒤에 

    add_action('init', 'my_init');
    function my_init(){
    	$logged_in_users = get_option('my_logged_in_users');
    	print_r($logged_in_users);
    }
    

    를 현재 홈페이지에 로그인 한 회원을 출력하고자 하는 곳에 code block을 이용해서 위 코드를 입력하면 적용이 되지 않고 그대로 코드가 출력이 됩니다. 

    좀 더 자세한 정보를 알려주시면 다시한번 적용을 해보겠습니다.

  • 안녕하세요.

    해당 코드는 테마의 functions.php 파일에 추가해주시면 됩니다.

    확인용 코드이기 때문에 활용해서 사용하셔야 합니다.

    또, 안내드린 코드들은 예제 코드이기 때문에

    세부적인 것은 직접 코드를 작성해주셔야 합니다.

    고맙습니다.

  • add_action('init', 'my_init');
    function my_init(){
    	$logged_in_users = get_option('my_logged_in_users');
    	print_r($logged_in_users);
    }

    위의 코드를 어디에 넣으면 되는건가요? ㅠㅠ 도움을 주셔도 제가 제대로 받지를 못하네요.....

  • 아~~~ 정말 감사드립니다. 코스모스팜 진짜 대박나세요.... 

  • 안녕하세요!

    알려주신 get_userdata() 함수로는 로그인한 내 정보 밖에는 못가져 오는데요.

    현재 홈페이지에 로그인한 모든 사용자의 정보를 가져와서 출력을 하고 싶은데요.

    지금 알려주신 방법 말고 어떤 방법이 있을까요?

    감사합니다.

  • 위의 코드는 알려주신대로 현재 사용하는 테마의 function.php 제일 하단에 입력후에 저장하고 테마를 변경해서 다른 테마 선택 후에 다시 적용을 하기는 했습니다.

    말씀해주신 내용 알겠습니다.

    감사합니다.

코스모스팜 회원관리