안녕하세요.
사용자를 그룹으로 묶은 뒤 해당 그룹에 접속이 가능한 페이지만 접속하도록 하려고 합니다.
내용을 찾다보니 User Role Editor에서 New Capabilities를 추가하고 functions.php 파일에 간단한 코드만 넣으면 되는 것처럼 나와 있고
http://shinephp.com/user-role-editor-wordpress-plugin/
cosmosfarm 게시판 https://www.cosmosfarm.com/threads/document/37350 에 나온 내용을 참고해서
다음과 같은 두 가지 방법을 사용을 해보았습니다.
1.
add_filter('the_content', 'page_restrict');
function page_restrict($content){
if(current_user_can('illegal') and (is_page(array(118,121,123,125,127,129,131,133)))){
?>
<script>
alert('권한이 없습니다!!! 관리자에게 문의하세요');
window.history.go(-1);
</script>
<?php
exit;
}
}
이 코드에서는 add_filter를 넣은 후부터는 각 페이지에서 아무런 내용도 보이지가 않고 제한도 되질 않습니다.
adf_filter를 빼면 내용은 보이나 제한 역시 안됩니다.
User Role Editor의 가이드를 따라서 혼합하여 작성을 해도 역시나 제한이 작동이 되지 않습니다.
if(current_user_can('illegal') and current_user_can('page_restrict') and is_page(array(118,121,123,125,127,129,131,133))){
?>
<script>
alert('권한이 없습니다!!! 관리자에게 문의하세요');
window.history.go(-1);
</script>
<?php
exit;
}
제가 뭘 잘못한 건지 더이상의 설명을 찾기가 어려워 문의를 드립니다.
안녕하세요.
처음에 https://www.cosmosfarm.com/threads/document/37350 에 있는 내용을 적용하면서
is_page(array( 'slug','slug'...)를 사용했던 것의 문제인듯 합니다.
다시 코드를 똑같이 바꾸고 is_page(array(id,id,..)로 넣었더니 바로 정상 동작을 하네요.
cosmosfarm 여러분의 도움이 없었다면 난감할 뻔 한 3번의 악몽을 무사히 넘기지 못했을 것 같습니다.
너무 감사드립니다.
안녕하세요~^^
프로그램 코드를 올려야 할 경우 반드시 에디터의 코드 스니펫 삽입 기능을 사용해주세요.
그렇지 않으면 이상한 코드로 바뀌거나,
질의응답 시 소통에 문제가 있을 수도 있습니다.
the_content 필터 사용 시 파라미터로 넘어온 $content는 return을 해주셔야 합니다.
아래처럼 return $content; 코드를 추가해보세요.
add_filter('the_content', 'the_content_20201026', 10, 1);
function the_content_20201026($content){
// 이곳에 코드를 추가해보세요.
return $content;
}
the_content 필터에 대한 자세한 내용은
아래 링크를 참고 부탁드립니다.
https://developer.wordpress.org/reference/hooks/the_content/
코스모스팜 회원관리 플러그인을 사용하시면 페이지 제한 기능을
코드 추가 없이 사용하실 수 있습니다.
자세한 내용은 아래의 링크 참고 부탁드립니다.
워드프레스 회원만 볼 수 있는 페이지 설정하기
워드프레스 페이지 접근 제한 기능 소개
고맙습니다.