특정 페이지 접속 시 로그인 페이지나 특정 페이지로 이동시키기
워드프레스에서 특정 페이지(혹은 글 또는 카테고리)에 게스트 사용자가 접속할 경우 로그인 페이지나 특정 페이지로 리디렉션시켜야 하는 경우가 있을 수 있습니다. 다음과 같은 함수를 사용하면 특정 페이지에 비로그인 사용자가 접속하면 지정된 페이지로 이동하게 됩니다.
add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_page('slug') && ! is_user_logged_in() ) { wp_redirect( 'http://www.example.com/your-page/', 301 ); exit; } } // Source: http://wordpress.stackexchange.com/
is_page('slug')에서 접속을 제한할 페이지의 slug를 지정합니다. 여러 페이지를 지정할 경우 is_page( array( 42, 'about-me', 'Contact' ) )와 같은 형식을 사용할 수 있습니다(여기 참조). 페이지 대신 카테고리 자체(is_category)나 카테고리 내의 글(in_category), 개별 글(is_single) 등 다양한 형태로 응용이 가능합니다.
그리고 위에서는 특정 페이지로 리디렉션되는데, 로그인 페이지로 리디렉션시키려면, 리디렉션되는 URL을 wp_login_url( home_url() )로 대체하면 됩니다. 그러면 비로그인 사용자(게스트 사용자)는 로그인 페이지로 이동하게 되고, 로그인 정보를 입력하면 사이트의 홈으로 리디렉션됩니다. 로그인 후 현재 페이지(직전 페이지)로 리디렉션시키려면 wp_login_url( get_permalink() )을 사용합니다(wp_login_url 참고).
홈페이지(전면 페이지) 접속 시 특정 페이지로 임시로 리디렉션시키려면 if ( is_page('slug') && ! is_user_logged_in() ) 코드 대신 다음 코드를 사용하면 될 것 같습니다.
if( is_home() || is_front_page() )