안녕하세요,
질문 두가지가 있는데요,
1. 회원들이 회원가입시에 ip도 같이 워드프레스에 저장될 수 있는 방법이 있을까요? 새로운 회원들이 가입시에 자동으로 저에게 이메일이 오는데, 거기엔 user ip도 같이 뜨는데 워드프레스에는 따로 저장이 되는 것 같지 않아서요..
2. 코스모스팜 login 페이지에는 소셜미디어 로그인이 같이 뜨는데 (즉, 소셜미디어 로그인 옵션도 주는데), register페이지에도 추가로 소셜미디어 로그인 옵션을 넣고 싶은데 가능한가요? 소셜로그인도 가능하다는 걸 모르고 register 페이지를 누른 회원들이 편리할수 있게 같은 페이지에 코스모스팜 register 폼 작성 또는 소셜로그인 옵션을 주고 싶어서요.
감사합니다.
안녕하세요~^^
1. user_register 액션을 사용하시면 회원가입 시 사용자의 ip도 저장하실 수 있습니다.
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보세요.
add_action('user_register', 'my_user_register');
function my_user_register($user_id){
$ip = '';
if(isset($_SERVER["HTTP_CF_CONNECTING_IP"]) && $_SERVER["HTTP_CF_CONNECTING_IP"] && filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP)){
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
else if(isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)){
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP)){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else if(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)){
$ip = $_SERVER['REMOTE_ADDR'];
}
if($ip){
update_user_meta($user_id, 'user_ip', $ip);
}
}
데이터베이스(DB) usermeta 테이블에 meta_key 컬럼이 user_ip 저장되며
meta_value 컬럼에는 실제 사용자의 ip로 저장됩니다.
워드프레스에서는 get_user_meta 함수로 표시하실 수 있습니다.
추가로, 코스모스팜 회원관리 플러그인의
로그인 기록 저장 설정을 사용하시면
언제 어디서 로그인을 시도했는지 IP주소와 성공 여부 등 정보를 저장합니다.
워드프레스 사용자 목록 페이지에 마지막 로그인 시간을 표시합니다.
관련 정보는 데이터베이스(DB) cosmosfarm_members_login_history 테이블에 저장됩니다.
2. 소셜 로그인 버튼은 아래의 숏코드로 표시하실 수 있습니다.
[cosmosfarm_members_social_buttons]
회원가입 페이지에도 표시하는 방법은
아래의 링크 참고해보시겠어요?
https://www.cosmosfarm.com/threads/document/16988
고맙습니다.
감사합니다!
코스모스팜 회원관리 플러그인을 사용을 하고 있는데요,
말씀하신데로, 로그인 기록 저장 설정을 사용하려면 어떻게 설정을 하면 될까요?^^ 코스모스팜 회원관리를 사용하고 있다면 알려주신 코드를 따로 function php.에 저장하지 않아도 되지요?
말씀하신데로 워드프레스 사용자 목록 페이지에 마지막 로그인 시간은 표시가 되지만 ip주소는 보이지 않네요~^^;;
감사합니다.
이전 댓글에 안내해드린 user_register 액션 코드를 추가해서
회원가입 시 아이피 주소를 표시하시려면
테마 쪽 functions.php 파일 하단에
아래의 코드를 추가해보시겠어요?
add_filter('manage_users_columns', 'my_manage_users_columns', 10, 1);
function my_manage_users_columns($columns){
$columns['user_ip'] = 'ip';
return $columns;
}
add_filter('manage_users_custom_column', 'my_manage_users_custom_column', 10, 3);
function my_manage_users_custom_column($output, $column_name, $user_id){
global $wpdb;
if($column_name == 'user_ip'){
$output = $wpdb->get_var("SELECT `meta_value` FROM `{$wpdb->prefix}usermeta` WHERE `user_id`='$user_id' AND `meta_key`='user_ip' LIMIT 1");
}
return $output;
}
코스모스팜 회원관리 플러그인의 로그인 기록 저장은
워드프레스 관리자 -> 회원가입관리 -> 보안설정 페이지에서 설정하실 수 있습니다.
로그인 기록 저장 기능 사용 시 저장된 ip로 표시하시려면
아래의 코드를 추가해보시겠어요?
add_filter('manage_users_columns', 'my_manage_users_columns', 10, 1);
function my_manage_users_columns($columns){
$columns['ip_address'] = 'ip';
return $columns;
}
add_filter('manage_users_custom_column', 'my_manage_users_custom_column', 10, 3);
function my_manage_users_custom_column($output, $column_name, $user_id){
global $wpdb;
$option = get_cosmosfarm_members_option();
if($option->save_login_history && $column_name == 'ip_address'){
$output = $wpdb->get_var("SELECT `ip_address` FROM `{$wpdb->prefix}cosmosfarm_members_login_history` WHERE `user_id`='$user_id' ORDER BY `login_history_id` DESC LIMIT 1");
}
return $output;
}
고맙습니다.