최종 방문일 기록 관련 질문

wp-members를 사용하고 있습니다.

워드프레스 어드민 사용자 페이지에 회원들의 최종 방문(last seen)을 표시할 수 있는 방법이 있나요??

마지막 로그인을 표시하는 방법은 찾았는데 회원이 로그아웃 했다가 다시 로그인 하지 않는 이상, 마지막 로그인 날짜가 변경되지않아서 회원의 활동이 멈춰져 있는 것으로 간주되기 쉬운 것 같습니다.

혹시 이미 로그인을 한 사용자여도 사이트에 접속할 때마다 방문 날짜를 표시하는 코드가 있을까요??

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

    워드프레스 사용자 페이지에 마지막 로그인을 표시는 어떻게 하셨는지요?

    플러그인이나 코드를 추가하셨다면 상황에 따라 적용 방법이 다릅니다.

    좀 더 구체적인 상황을 설명해주시겠어요?

    고맙습니다.

  • function.php 파일에 아래의 코드를 삽입하였습니다.

    add_action('wp_login', 'my_last_login', 10, 2);
    function my_last_login($user_login, $user){
    	$current_date = date('Y-m-d- H:i:s', current_time('timestamp'));
    	update_user_meta($user->ID, 'my_last_login', $current_date);
    }
    add_filter('manage_users_columns', 'my_last_login_manage_users_columns', 10, 1);
    function my_last_login_manage_users_columns($columns) {
    	$columns['my_last_login'] = '마지막 로그인';
    	return $columns;
    }
    add_filter('manage_users_custom_column', 'my_last_login_manage_users_custom_column', 10, 3);
    function my_last_login_manage_users_custom_column($output, $column_name, $user_id){
    	if($column_name == 'my_last_login'){
    		$last_login = get_user_meta($user_id, 'my_last_login', true);
    		return $last_login;
    	}
    	return $output;
    }

    감사합니다

  • 안녕하세요.

    테마 쪽 functions.php 파일에 코드를 추가하신 건지요?

    올려주신 코드를 기준으로 로그인 사용자가 페이지 이동 시에도

    로그인 기록을 업데이트하시려면

    아래의 코드도 추가해서 확인해보시겠어요?

    add_action('template_redirect', 'template_redirect_20200714');
    function template_redirect_20200714(){
    	$user_id = get_current_user_id();
    	if($user_id){
    		$current_date = date('Y-m-d- H:i:s', current_time('timestamp'));
    		update_user_meta($user_id, 'my_last_login', $current_date);
    	}
    }

     

    워드프레스 액션이나 다른 플러그인에도 위와 같이 적용하실 수 있습니다.

    워드프레스 액션에 대한 자세한 내용은

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

    https://codex.wordpress.org/Plugin_API/Action_Reference

    고맙습니다.

  • 답변 감사합니다. 원하는대로 적용이 잘 되었어요!!

    그런데 사용자명, 이메일처럼 제목줄 클릭하면 마지막 로그인 기록을 날짜순으로 정렬하려고 아래의 코드를 넣었는데 날짜 순서대로 정렬되지 않고 변화가 없네요ㅠㅠ

    add_filter('manage_users_sortable_columns', 'my_manage_users_sortable_columns', 10, 1);
    function my_manage_users_sortable_columns($columns){
    	$columns['my_last_login'] = 'my_last_login';
    	return $columns;
    }

    이런 경우에는 어떻게 해야되나요??

  • 워드프레스 사용자 페이지에서 manage_users_sortable_columns 필터 적용 시

    정럴이 정상적으로 되지 않는다면 pre_user_query 액션을 활용해보시겠어요?

    자세한 내용은 아래의 링크들을 참고해보세요.

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

    https://wordpress.stackexchange.com/questions/27518/sortable-custom-columns-in-user-panel-users-php

    고맙습니다.

  • 스레드봇님의 도움으로 현재 어드민 사용자 페이지에 마지막 로그인을 원하는대로 표시하고 있는데요

    마지막 로그인 날짜와 시간이 표시되는 것은 너무 좋은데 여기에서 추가로 마지막 로그인이 몇일 전인지에 대한 정보도 알고 싶습니다ㅠㅠ 관리해야되는 회원이 얼마되지않는 지금은 괜찮지만 회원이 늘어나기 시작하면 몇일전에 로그인했는지 한눈에 들어오는 정보가 필요할 것 같아서요.....

    혼자서 해보려고 코드의 마지막 부분에 있는 $current_date 밑에 줄에

    $the_login_date = human_time_diff($last_login);

    라는 코드를 넣어보았는데 아무런 변화가 없네요ㅠㅠ

    날짜와 몇일전인지에 대한 정보를 같이 표시할 수 있는 방법은 없을까요?? 새로운 column을 만들어야 되나요??

  • template_redirect 액션은 워드프레스 홈페이지 로드 시에 호출이 되고

    update_user_meta 함수를 활용해서 로그인 날짜를 넣게 되면

    이전에 로그인한 데이터가 현재의 시간으로 업데이트됩니다.

    그렇기 때문에 이전에 로그인한 데이터도 저장되게 하시려면

    다른 방법이 있을 수도 있지만

    배열의 형태로 저장하고 배열 안에 오늘 날짜의 값이 있으면 해당 날짜를 업데이트하고

    오늘 날짜의 값이 없으면 해당 배열에 새롭게 추가해주셔야 할 듯합니다.

    또한 로그인하는 날짜가 많아지면 배열의 길이도 그만큼 늘어나기 때문에

    조건문을 적절히 활용해서 특정 길이만큼만 저장해 보세요.

    고맙습니다.

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