사이트 작업할 때 공사중 페이지를 플러그인 없이 구현하는 내용을 플러그인 없이 워드프레스 공사 중 페이지 만들기 글에 소개하였는데, 그 내용은 보통 사이트를 아직 완전히 구성하지 않은 단계에서 해볼 수 있는 보통의 ‘공사중 페이지’ 방법입니다.
사이트를 운용 중에 사용해도 되지만, 여러 사람이 콘텐츠를 등록할 때 비회원 방문자와 검색엔진에 일시적인 서비스 중지를 알리고 회원은 접근 가능하여 콘텐츠를 등록할 수 있어야 하는 상황도 때로 있습니다.
아래 코드 정도면 이러한 상황을 처리하는 데에 충분할 거 같습니다.
add_action( 'get_header', 'mysite2121_maintenance_mode' );
function mysite2121_maintenance_mode(){
if( ! current_user_can('moderate_comments') || !is_user_logged_in() ) {
wp_die(
'<h1 style="color:black;margin-bottom: 1em; padding-bottom: 1em">잠깐 점검하고 있습니다.</h1><p>더 좋은 환경을 위해 작은 문제를 해결하고 있습니다. 빨리 서비스를 사용할 수 있도록 하겠습니다.</p>',
'잠깐접근제한',
array(
'response' => 503,
'back_link' => true
)
);
}
}
가입제 사이트가 아니라고 가정하여 is_user_logged_in
조건 추가, 로그인한 회원 중에 editor Role 이상 접근 가능한 설정을 위해 moderate_comments
capability 를 사용할 수 있습니다.
moderate_comments
capability는 editor, administrator Role만 (기본으로) 가지고 있습니다.
functions.php
또는 기타 코드 추가 가능한 곳에 추가하면 됩니다.
가입제 사이트가 아니기에 get_header
훅이 아니라 template_redirect
훅으로 로그인 전 상태에서 로그인 페이지로 이동(Redirect)하거나 다른 안내 페이지를 만들어 그 페이지로 이동하도록 할 수 있습니다.
그런데, 일시적인 서비스 중지임을 검색엔진에 알리는 것이 필요할 수 있으므로 소개한 코드 정도면 충분할 거에요.
제가 원했던 것과 똑같이 됩니다. 글자는 좀 바꿧는데 정말 고맙습니다.