로그인 리디렉션 문의

로그인 시 특정 페이지로 이동 시키고 싶어서 테마의 functions.php에 코드를 좀 추가해봤는데

다른 페이지에서 로그인 시 abc 페이지로 잘 이동하는데 my-account 페이지에서 로그인 해도 abc 페이지로 이동하더라고요

수정 전)

function login_redirect($redirect_to) {
return site_url('/abc'); 
}

그래서 아래와 같이 다시 수정해봤는데도 abc 페이지로만 이동 하네요

수정 후)

function login_redirect($redirect_to) {
if ( is_page('my-account')){
    return site_url('/my-account'); 
}
else {
    return site_url('/abc/'); 
}
}

어떻게 수정해야 될까요? 

 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    워드프레스 login_redirect 필터를 활용하신 건지요?

    우커머스 woocommerce_login_redirect 필터를 활용하시면

    우커머스 쪽에서 로그인 후 이동될 페이지를 설정하실 수 있습니다.

    아래의 코드를 활용해보세요.

    add_filter('woocommerce_login_redirect', 'woocommerce_login_redirect_20210204', 10, 2);
    function woocommerce_login_redirect_20210204($redirect, $user){
    	// 이곳에 코드를 추가해보세요.
    	return $redirect;
    }

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

    고맙습니다.

  • 위에 woocommerce_login_redirect 필터에 대한걸 안적었네요

    woocommerce_login_redirect 필터를 활용한 코드를 사용해 본적인데

     

    이 코드에는 문제가 없는것일까요?

    add_filter('woocommerce_login_redirect', 'login_redirect');

    function login_redirect($redirect_to) {
    if ( is_page('my-account')){
        return site_url('/my-account'); 
    }
    else {
        return site_url('/abc/'); 
    }

    if ( is_page('my-account')) 에 안걸리고 무조건 else의 abc로만 이동해서요..

     

  • 다른 페이지에서 로그인할 때는 어떤 로그인 폼이 표시되는지요?

    is_page('my-account') 코드 대신 is_account_page() 함수를 활용해보시겠어요?

    is_account_page() 함수를 활용하시면 현재 페이지가

    우커머스 my-account 페이지인지 체크하실 수 있습니다.

    고맙습니다.

  • 다른 특정 페이지에서도 

    my-account 로그인 폼에서 로그인 되도록 리디렉션 해놨습니다.

    is_account_page() 로 변경해도 안되네요 음...

    특정 페이지 접근 하면 my-account로 보내고 거기서 로그인 화면 나와서 

    로그인 하면 abc로 보낼려고 한건데

    my-account에서 로그인 해도 abc로 가서요...

     

    제가 넣은 전체 코드 입니다.

     

    // 특정 페이지 접근 시 로그인(my-account)로 리디렉션
    add_action( 'template_redirect', 'redirect_to_specific_page' );

    function redirect_to_specific_page() {
        if ( is_page( '특정 페이지' ) && ! is_user_logged_in() ) {
            wp_redirect('홈페이지/my-account/', 301 );
            exit; 
        }
    }

    // redirects for login / logout -- 우커머스 로그인/로그아웃 시 리디렉션
    add_filter('woocommerce_login_redirect', 'login_redirect');

    function login_redirect($redirect_to) {
    if ( is_account_page() ){
        return site_url('/my-account'); 
    }
    else {
        return site_url('/abc/');
    }
    }

    add_action('wp_logout','logout_redirect');

    function logout_redirect(){
        wp_redirect( home_url() );
        exit;
    }
     

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요