wp_signon

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();
}