우커머스 내 계정 페이지에서 로그인 시 이전 URL로 리디렉션시키는 방법

Last Updated: 2024년 10월 21일 댓글

워드프레스 우커머스의 내 계정 페이지에서 로그인을 하면 내 계정 페이지로 이동하는 대신 이전 URL로 되돌아 가도록 하기를 원하는 경우가 있습니다. 우커머스의 내 계정 페이지에서 로그인 시 이전 URL로 리디렉션시키는 방법에 대하여 살펴보겠습니다.

우커머스 내 계정 페이지에서 로그인 시 이전 URL로 리디렉션시키는 방법

워드프레스 우커머스의 결제 페이지에서 로그인 링크를 눌러 로그인을 하면 결제 페이지로 되돌아가서 계속 결제를 진행할 수 있도록 합니다.

하지만 다른 페이지에서 로그인을 하면 내 계정 페이지로 이동하도록 기본적으로 설정되어 있습니다.

우커머스의 내 계정 페이지에서 로그인할 경우 로그인 후 내 계정 페이지가 아닌 로그인하기 전의 페이지로 이동시키고 싶은 경우 다음과 같은 코드를 사용할 수 있습니다.

/* WooCommerce Login Redirect to Previous URL */
/* This code redirects users to their previous page after logging in, instead of the default WooCommerce account page. */

add_action( 'woocommerce_login_form_end', 'redirect_to_previous_url_on_login' );

function redirect_to_previous_url_on_login() {
    $referrer = wc_get_raw_referer();
    if ( !$referrer || strpos( $referrer, "lost-password" ) !== false ) {
        return;
    }
    $redirect_url = wp_validate_redirect( $referrer, wc_get_page_permalink( 'myaccount' ) );
    echo '<input type="hidden" name="redirect" value="' . esc_url( $redirect_url ) . '" />';
}

상기 코드 스니펫을 차일드 테마의 함수 파일에 추가하시기 바랍니다. (차일드 테마를 만들지 않고 부모 테마의 함수 파일에 코드를 추가할 경우, 추후 테마가 업데이트될 때 추가된 코드가 사라집니다.)

코드를 테마 함수 파일에 추가하려면 FTP에 접속하거나 파일 관리자를 통해 서버에 접근할 수 있어야 합니다. 테마 파일 편집기를 활성화하여 워드프레스 관리자 페이지에서 편집을 해도 되지만, 그런 경우 보안상 안전하지 않고 잘못 수정할 경우 사이트가 먹통이 될 수 있습니다.

상기 코드는 플랫섬(Flatsome) 테마에서 테스트하였으며, 다른 테마에서는 테스트를 하지 않았지만 아바다 등 대부분의 테마에서 원하는 대로 작동할 것이라 생각됩니다. 혹시 제대로 작동하지 않는 경우 해당 테마와 환경을 아래 댓글을 통해 알려주시면 시간이 될 때 확인해보겠습니다.

다른 방법: 우커머스 결제 시 로그인 페이지로 이동시키기

이 블로그에서 작년에 우커머스 결제 시 로그인 페이지로 강제로 이동시키는 방법에 대하여 설명한 적이 있습니다.

위의 글에 제시된 코드를 사용할 경우에도 우커머스의 내 계정(My Account) 페이지에서 로그인 시 직접 URL로 이동하는 것 같습니다. 상기 글에 제시된 코드로도 시도해볼 수 있을 것입니다. 결제(체크아웃) 버튼을 누르면 강제적으로 로그인 페이지가 표시되도록 하려는 경우에 특히 유용합니다.

워드프레스 기본 로그인 페이지를 우커머스 내 계정 페이지로 바꾸기

이전에 워드프레스 기본 로그인 URL을 Ultimate Member 로그인 페이지로 바꾸는 방법에 대하여 설명한 적이 있습니다.

상기 글에 제시된 코드를 응용하여 워드프레스 기본 로그인 페이지를 우커머스의 내 계정 페이지로 바꿀 수 있습니다.

/**
 * Replace default WordPress login URL to WooCommerce My Account page
 * @param string $login_url
 * @param string $redirect
 * @return string
 */
function wc_my_account_login_url( $login_url, $redirect ) {
    $my_account_url = wc_get_page_permalink( 'myaccount' );
    if ( $my_account_url ) {
        $login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), $my_account_url );
    }
    return $login_url;
}
add_filter('login_url', 'wc_my_account_login_url', 10, 2);

상기 코드는 충분한 테스트를 하지 않았지만 잘 작동할 것 같습니다. 만약 작동하지 않는 경우에는 Redirect Login to WooCommerce "My account" Page라는 무료 플러그인을 사용하면 로그인 시 항상 우커머스의 "내 계정" 페이지가 표시될 것입니다.

LoginWP 플러그인: 로그인 후 이전 페이지로 리디렉션시키기

워드프레스에서 로그인/로그아웃 후 리디렉션될 URL을 상세하게 설정할 수 있는 플러그인으로 LoginWP가 있습니다.

이전 페이지로 리디렉션시키는 기능은 LoginWP Pro에서만 지원되는 것 같습니다.

참고


댓글 남기기

Leave a Comment