회원제 플러그인을 사용하면 보다 세밀하게 특정 글/페이지 등에 대한 접근을 제한할 수 있습니다(참고). 이 글에서는 간단한 함수를 사용하여 이러한 기능을 구현하는 방법에 대해 살펴보겠습니다.
가령 특정 페이지에 대한 접근을 로그인 사용자에게만 허용하고 게스트(손님)는 접근하지 못하도록 하고 싶다면 다음 코드를 사용할 수 있습니다.
add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('page_slug') && !is_user_logged_in()) { auth_redirect(); } }
auth_redirect()는 페이지에서 호출되어 해당 페이지를 보고자 하는 사용자가 로그인했는지 여부를 확인하여 로그인하지 않았다면 로그인 페이지로 리디렉션(이동)합니다. 로그인 후에 원래 접근하고자 시도했던 페이지로 이동하게 됩니다(참고). auth_redirect() 대신 다음 코드를 사용해도 동일한 효과를 얻을 수 있습니다.
$redirect = wp_login_url( get_permalink() ); wp_redirect( $redirect ); exit;
사용자 지정된 로그인 페이지로 이동시키려면:
$return_url = esc_url( home_url( '/login/' ) ); // Redirect to your custom login page in WordPress wp_redirect( $return_url ); exit;
그러면 www.example.com/login/ 페이지로 이동하게 됩니다. 특정 URL로 이동시키고자 하는 경우 wp_redirect를 사용하면 됩니다.
wp_redirect( 'http://www.example.com/your-page/', 301 ); exit;
그리고 is_page('contact') 이 부분을 적절히 수정하여 특정 카테고리/특정 글 등으로 대체할 수 있습니다. 다음 WordPress 문서를 참고하시면 도움이 될 것입니다.
위와 같은 코드를 사용하면 굳이 무거운 플러그인을 사용할 필요 없이 쉽게 특정 페이지/글/카테고리 등을 제한할 수 있습니다. 그리고 !is_user_logged_in() 부분을 적절히 수정하여 특정 회원 등급별(역할별)로 제한하는 것도 가능합니다(참고).
참고로 사이트 개발을 위해 사이트 액세스를 제한하려면 Redirect to login if not logged in같은 플러그인을 사용할 수 있습니다. 개인적으로는 이 기능을 위해 Hide My Site라는 플러그인을 주로 사용합니다. 이러한 플러그인을 사용하면 사이트 개발/사이트 유지보수 중에 일반인의 접근을 차단할 수 있습니다.
정말 아무리 찾아봐도 우리나라에 워드프레스가 이정도로 정리된 사이트는 없는 것 같습니다.
글 잘읽었습니다!, 도움이 많이 됐어요 :)
감사합니다~
풍성한 추석 명절 되시기 바랍니다.
이 코드는 어디에 삽입하나요??
안녕하세요? 블로그를 방문해주셔서 감사합니다.
코드는 모두 사용 중인 테마의 함수 파일에 추가해야 합니다.
먼저 차일드 테마를 만드시고, 차일드 테마 내의 함수 파일에 추가하시기 바랍니다.
https://www.thewordcracker.com/basic/how-to-add-custom-codes-to-wordpress/ 글을 참고해보세요.