워드프레스 사이트에서 로그인해야 글을 볼 수 있도록 설정하는 방법

로그인한 사용자만 글을 볼 수 있도록 워드프레스 사이트를 설정하고 싶은 경우가 있습니다. 이 경우 아래에 소개하는 플러그인을 사용하거나 간단한 코드를 사용하여 방문자를 로그인 페이지로 이동시킬 수 있습니다.

Force Login 플러그인

Force Login 워드프레스 플러그인 - 워드프레스 사이트에서 로그인해야 글을 볼 수 있도록 하는 방법

Force Login 플러그인을 사용하면 로그인 사용자만 사이트 내용을 볼 수 있는 비공개 사이트를 운영할 수 있습니다. 이 플러그인을 활성화면 모든 방문자(비로그인 사용자)는 먼저 로그인 페이지로 이동됩니다.

사이트를 오픈할 때까지 이 플러그인을 사용하여 일반인의 접근을 막거나(이 경우 "공사중/사이트 준비 중/유지보수 알림 플러그인"에서 소개하는 플러그인도 사용 가능) 멤버들만 이용할 수 있도록 사이트를 비공개로 만들 수 있습니다.

이 플러그인을 설치하면 설정을 할 수 있는 별도의 페이지는 없습니다. 하지만 코드를 사용하여 로그인 후 리디렉션을 설정하거나 예외를 지정할 수 있습니다.

로그인 후 리디렉션될 URL 지정하기

다음 필터를 사용 중인 테마의 함수 파일(functions.php)에 추가하도록 합니다. 반드시 자식 테마를 사용하시기 바랍니다(참고). 그렇지 않으면 테마가 업데이트되면서 수정 사항이 초기화되어 사라지게 됩니다.

/**
* 로그인 시 리디렉션될 URL 설정
*
* @return string URL to redirect to on login. Must be absolute.
*/
function my_forcelogin_redirect() {
return site_url( '/mypage/' );
}
add_filter('v_forcelogin_redirect', 'my_forcelogin_redirect', 10, 1);

URL은 절대 경로로 지정되어야 합니다(예: http://www.example.com/mypage). 권장 형식은 site_url('/mypage/')입니다.

특정 페이지나 글에 대하여 예외 설정하기

강제 로그인 기능 무시

특정 페이지나 글에 대해서는 강제 로그인 기능을 무시하도록 설정할 수 있습니다. 다음과 같은 코드를 사용합니다.

/**
* 강제 로그인 기능을 무시하여 예외 허용
*
* @return bool Whether to disable Force Login. Default false.
*/
function my_forcelogin_bypass( $bypass ) {
if ( is_single() ) {
$bypass = true;
}
return $bypass;
}
add_filter('v_forcelogin_bypass', 'my_forcelogin_bypass', 10, 1);

화이트리스트 URL

각 URL은 절대 경로 형식이어야 하며, 권장 형식은 site_url('/mypage/')입니다.

/**
* Filter Force Login to allow exceptions for specific URLs.
*
* @return array An array of URLs. Must be absolute.
*/
function my_forcelogin_whitelist( $whitelist ) {
$whitelist[] = site_url( '/mypage/' );
$whitelist[] = site_url( '/2015/03/post-title/' );
return $whitelist;
}
add_filter('v_forcelogin_whitelist', 'my_forcelogin_whitelist', 10, 1);

로그인 화면에서 '{sitename}(으)로 돌아가기' 링크를 숨기는 방법

Force Login 플러그인이 활성화되면 로그인 화면에서 '← {sitename}(으)로 돌아가기' 링크를 클릭해도 사이트 홈으로 돌아가지 않습니다. 이 링크를 숨기고 싶은 경우 다음 코드를 사용합니다.

// 로그인 화면에서 '{sitename}(으)로 돌아가기' 링크 숨기기.
function my_forcelogin_hide_backtoblog() {
echo '<style type="text/css">#backtoblog{display:none;}</style>';
}
add_action('login_enqueue_scripts', 'my_forcelogin_hide_backtoblog');

Ultimate Member 플러그인

Ultimate Member 플러그인 - 워드프레스 멤버십 플러그인

Ultimate Member는 회원제 사이트를 운영하려는 경우에 사용할 수 있는 무료 워드프레스 플러그인입니다.

이 플러그인은 다음과 같은 기능을 제공합니다.

  • 프런트엔드 사용자 프로필
  • 프런트엔드 사용자 회원 가입
  • 프런트엔드 사용자 로그인
  • 커스텀 폼 필드
  • 폼 필드에 대한 조건부 로직
  • 드래그 & 드롭 폼 빌더
  • 사용자 계정 페이지
  • 커스텀 사용자 역할
  • 멤버 디렉터리
  • 사용자 이메일
  • 컨텐츠 제한
  • 조건부 내비게이션 메뉴
  • 사용자 프로그램에 글쓴이 글과 댓글 표시
  • 개발자를 위해 수 십개의 액션과 필터 제공

Ultimate Member에서는 워드프레스 사이트를 로그인한 사용자(회원)만 접근할 수 있도록 설정하는 기능을 제공합니다. Ultimate Member > Settings > Access에서 Global Site Access를 "Site accessible to Logged In Users"로 설정합니다.

사이트를 회원만 접근 가능하도록 설정

유료 플러그인인 UserPro에도 이와 같은 기능이 제공됩니다. 하지만 회원제 사이트를 운영하지 않을 경우 이러한 플러그인을 사용할 필요가 없습니다.

※참고로 최근 단비스토어에서 얼티밋 멤버 – 코리아라는 얼티밋 멤버 익스텐션을 출시했습니다. 우리나라 상황에 맞는 기능을 추가한 것 같습니다. 자세한 내용은 단비스토어 페이지(https://danbistore.com/item/um-korea/)를 참고해보세요.

※우커머스 쇼핑몰을 운영하는 경우 우커머스 멤버십 플러그인을 이용하여 회원제 사이트를 만들 수 있습니다.

코드를 사용하여 비로그인 사용자를 로그인 페이지로 리디렉션시키기

플러그인을 사용하는 것이 꺼려지는 경우 간단한 코드를 테마의 함수 파일에 추가하여 비로그인 사용자(방문자)가 사이트에 접근하면 로그인 화면으로 이동시킬 수 있습니다.

상황에 따라 여러 가지 방법을 생각해볼 수 있습니다. 다음과 같은 액션을 사용하여 비로그인 사용자를 로그인 페이지로 이동시킬 수 있습니다.

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

if ( !is_user_logged_in() ) {

wp_redirect(wp_login_url( get_permalink() ));
exit;
}
}

이 코드는 "특정 페이지 접속 시 로그인 페이지나 특정 페이지로 이동하기"에 소개한 코드를 응용한 것입니다. 테스트해보니 문제 없이 작동하네요. 만약 제대로 작동하지 않으면 위에서 소개한 Force Login 플러그인을 사용해보시기 바랍니다.

또 다른 방법으로 auth_redirect() 함수를 사용할 수도 있습니다.

if ( !is_user_logged_in() ) {
auth_redirect();
}

auth_redirect()에 대한 자세한 내용은 워드프레스 공식 문서를 참고해보세요.

참고:


6개 댓글

  1. 특정 페이지의 한섹션(예를들어 자료다운로드 등)만 로그인 후 보일 수 있도록 하려면 어떤 플러그인을 어떻게 활용하면 되는지 문의 드립니다.

    1. 안녕하세요, 오정민님. 문의하신 내용은 다양한 방법으로 가능할 것 같습니다.

      1. 회원제 플러그인: Ultimate Member나 WP-Members와 같은 무료 멤버십 플러그인을 사용하여 콘텐츠의 특정 부분을 보호할 수 있습니다. 예를 들어, Ultimate Member 플러그인의 경우 다음 문서에서 방법이 잘 설명되어 있습니다.

      https://docs.ultimatemember.com/article/177-restrict-content-on-a-page-post-to-logged-in-users

      2. 멤버십 플러그인은 회원제 사이트 운영에 사용되는 플러그인이기 때문에 사이트에 부담을 줄 수 있을 것입니다. 콘텐츠 액세스 제한 기능만 원하는 경우 Content Control과 같은 플러그인을 설치하여 테스트해볼 수 있을 것 같습니다.

      https://ko.wordpress.org/plugins/content-control/

      3. Brizy 페이지 빌더: 최근 Brizy 페이지 빌더에서 멤버십 기능을 추가했습니다. 이 페이지 빌더를 사용하면 수월하게 원하는 작업이 가능할 것입니다. 하지만 페이지 빌더를 사용하고 있다면 페이지 빌더를 바꾸는 것은 그리 바람직하지는 않을 것입니다. 다음 글을 참고해보세요.

      https://www.thewordcracker.com/basic/brizy-%ed%8e%98%ec%9d%b4%ec%a7%80-%eb%b9%8c%eb%8d%94-%eb%ac%b4%eb%a3%8c-%eb%a9%a4%eb%b2%84%ec%8b%ad/

  2. UserPro는 정말 비추입니다. 자체로는 훌륭한 데, 커스텀이 거의 불가능합니다.
    사실, Ultimate Member도 자체 프로필 템플릿을 사용하는 부분이 맘에 안 들지만, 현재 나온 회원관리 플러그인 중에서는 현실적으로 최선의 답인 것 같습니다.

    1. 감사합니다~

      예전에는 멤버십 플러그인으로 WP-Members가 많이 사용된 것 같지만, 이제는 Ultimate Member가 조금 더 많이 사용되고 있네요.

댓글 남기기

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