wp_signon()은 워드프레스에서 사용자 자격증명을 받아 로그인 처리를 하는 함수로, 사용자 로그인 정보(아이디, 비밀번호, ‘remember me’ 설정)를 배열로 전달하면, 성공 시 WP_User 객체, 실패 시 WP_Error 객체를 반환하며 로그인 쿠키를 설정해 줍니다. 예제는 사용자 정보를 배열로 만들어 wp_signon()에 전달하고, 반환 값으로 로그인 성공 여부를 확인하여 오류 메시지를 출력하거나 사용자 세션을 설정하는 방식입니다.
if ( 'POST' === $_SERVER['REQUEST_METHOD'] ) {
// POST 데이터에서 로그인 정보 가져오기
$creds = array(
'user_login' => $_POST['username'], // 폼 필드 이름에 맞게 수정
'user_password' => $_POST['password'], // 폼 필드 이름에 맞게 수정
'remember' => isset($_POST['rememberme']) // 'remember me' 체크 여부
);
// wp_signon 함수 호출
$user = wp_signon( $creds, false ); // 두 번째 인자는 'false'로 설정하여 보안 강화
// 로그인 결과 확인
if ( is_wp_error( $user ) ) {
echo '로그인 실패: ' . $user->get_error_message();
// 로그인 실패 시 처리 (예: 오류 메시지 표시)
} else {
// 로그인 성공 시 처리
// $user 객체는 성공한 사용자의 정보를 담고 있습니다.
// wp_set_current_user($user->ID); // 세션 설정 (선택 사항, wp_signon이 자동으로 처리하는 경우도 있음)
// wp_set_auth_cookie($user->ID); // 쿠키 설정 (선택 사항)
echo '로그인 성공! 사용자: ' . $user->display_name;
// 성공 후 리디렉션 등 추가 작업
// wp_redirect( home_url() );
// exit;
}
}
// 관리자 사용자 'admin_user'를 자동 로그인 시키는 예시
$creds = array(
'user_login' => 'admin_user',
'user_password' => 'your_secure_password', // 실제 비밀번호로 변경
'remember' => true
);
$user = wp_signon( $creds, false );
if ( !is_wp_error( $user ) ) {
// 성공 시
echo '자동 로그인 성공!';
// 현재 사용자 설정 및 쿠키 설정 (필요시)
// wp_set_current_user($user->ID);
// wp_set_auth_cookie($user->ID);
} else {
// 실패 시
echo '자동 로그인 실패: ' . $user->get_error_message();
}