[워드프레스] 함수를 사용하여 특정 글/페이지/카테고리에 대한 접근 제한하기

회원제 플러그인을 사용하면 보다 세밀하게 특정 글/페이지 등에 대한 접근을 제한할 수 있습니다(참고). 이 글에서는 간단한 함수를 사용하여 이러한 기능을 구현하는 방법에 대해 살펴보겠습니다.

가령 특정 페이지에 대한 접근을 로그인 사용자에게만 허용하고 게스트(손님)는 접근하지 못하도록 하고 싶다면 다음 코드를 사용할 수 있습니다.

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라는 플러그인을 주로 사용합니다. 이러한 플러그인을 사용하면 사이트 개발/사이트 유지보수 중에 일반인의 접근을 차단할 수 있습니다.

참고:


4개 댓글

  1. 정말 아무리 찾아봐도 우리나라에 워드프레스가 이정도로 정리된 사이트는 없는 것 같습니다.
    글 잘읽었습니다!, 도움이 많이 됐어요 :)

댓글 남기기

* 이메일 주소는 공개되지 않습니다.