워드프레스 우커머스의 내 계정 페이지에서 로그인을 하면 내 계정 페이지로 이동하는 대신 이전 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에서만 지원되는 것 같습니다.
댓글 남기기