한가지 더 질문드립니다.
예를들어 한 포스팅(게시글) 을 '기승전결'로 나누어서 작성했다고 가정하고, '승'부분은 구독자에게만 '전'부분은 기여자, '결'부분은 글쓴이만 열람 가능하도록 설정하는 방법이 있나해서 여쭤봅니다. 제 사이트의 유료회원 플랜이 3종류라서 이런게 되면 참 좋을 것 같습니다만...
안녕하세요~^^
숏코드를 활용하시면 특정 역할의 사용자에게만
내용을 표시하실 수 있습니다.
간단하게 예제 코드를 작성해봤습니다.
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 활용해보시겠어요?
add_shortcode('baztag', 'baztag_func');
function baztag_func($atts, $content=''){
$role = isset($atts['role'])&&$atts['role'] ? $atts['role'] : '';
if($role == 'admin'){
$user = wp_get_current_user();
if(!in_array('administrator', $user->roles)){
$content = '';
}
}
return "content = $content";
}
실제 숏코드는 아래처럼 사용해보세요.
[baztag role=admin]워드프레스 관리자만 보입니다.[/baztag]
숏코드에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://codex.wordpress.org/Function_Reference/add_shortcode
워드프레스 역할과 권한에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://wordpress.org/support/article/roles-and-capabilities/
KBoard 플러그인 게시글 본문 내용에 숏코드가 그대로 표시된다면
워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 고급설정 페이지에서
게시글 숏코드(Shortcode) 실행 설정을 활성화해보세요.
고맙습니다.
어제 질문이 조금 오해의 여지가 있어 다시 한번 여쭤봅니다. 예를들어 한 포스팅(게시글) 을 '기승전결'로 나누어서 작성했다고 가정하고, '승'부분은 구독자이상의 회원에게만 '전'부분은 기여자이상, '결'부분은 글쓴이이상의 권한을 가진 회원만이 열람 가능하도록 설정하는 방법이 있나해서 여쭤봅니다.
바꿔말하면 어느 특정 포스팅의 문장 길이가 50줄이라 가정했을 때,
구독자는 1줄-20줄 까지만.
기여자는 1줄-30줄 까지만.
글쓴이는 1줄-50줄 까지 (모든 내용) 읽을 수 있는 권한을 주고 싶은데, 이럴 경우에도 제시해준 코드로 실현 가능한지요?
그리고, 이게 가능할 경우 편집기 안에서는 어떤 기능을 사용하여 구분선을 설정해야 하는지 알려주시면 감사하겠습니다.
안내해드린 코드는 예제 코드이기 때문에
원하시는 방향으로 적용하시려면
역할 또는 권한 체크하는 코드를 더 보완하셔야 합니다.
게시글 작성 시에는 에디터에서 구분선을 설정하는 것이 아닌
이전 댓글에 안내해드린 숏코드처럼 적용해주시면 됩니다.
고맙습니다.
제시 해주신 코드를 적용하고 문장을 [baztag role=admin] [/baztag]를 묶었더니 문장 말미에 'content = ' 라고 표시되는데, 이걸 지우려면 어떻게 해야하나요?
그리고, 비회원이라도 10줄까지는 까지는 읽을 수 있게 하고, 그 밑에 '더 보시려면 로그인하세요' 라는 링크 또는 버튼을 장착하려면 어떻게 해야 하나요.
또한, 구독자, 기여자, 글쓴이, 각각의 코드도 제시해 주시면 감사하겠습니다. 제가 개발자 아니라 어디를 보완해야 될지 감이 안 오네요.ㅜㅜ
content = 문구를 안 보이게 하시려면
이전 댓글에 안내해드린 코드 중
아래의 코드를 찾아서
return "content = $content";
아래의 코드로 교체해보시겠어요?
return $content;
워드프레스 글(Post) 또는 KBoard 본문에
버튼을 추가하시려면 아래 HTML 코드를 활용해보세요.
<button type="button" onclick="window.location.href='페이지주소'">버튼</button>
위의 코드에서 페이지주소 부분에는 실제 이동할 페이지 주소로 적용해보세요.
커뮤니티에서 모든 코드를 만들어 드리는 것은 현실적으로 불가능합니다.
다만, 저희는 홈페이지 주소를 알려주시면 수정 시 막히시는 부분을 간단히 도움을 드릴 수 있습니다. (HTML, CSS 코드 등)
고맙습니다.
모든 것을 알려달라는 것은 아니고요..비개발자라도 이해할 수 있을 정도의 조언을 듣고 싶을 따름입니다.
예시코드만 보고 어디를 어떻게 고쳐야 하는지 알 수 있으면 애초에 코스모스팜 유료회원이 되지도 않았겠죠 (×_×)
예를 들면, 위 예시코드에서 admin과 administrator 를 ●●●로 수정하면 글쓴이 권한자한테도 적용이 된다는 식의 설명을 원하는 것이죠. 수정하는 방법을 알아야 애써 알려주신 예시코드를 활용할 수 있게 되는 것이니...
그럼 계속해서 잘 부탁드리겠습니다.
특정 역할 이상일 때만 표시하시려면
워드프레스 current_user_can 함수로 체크하셔야 할 듯합니다.
아래의 링크를 참고하시면
각 역할별 권한을 확인하실 수 있습니다.
https://wordpress.org/support/article/roles-and-capabilities/
실제 숏코드는 아래처럼 적용해보세요.
add_shortcode('baztag', 'baztag_func');
function baztag_func($atts, $content=''){
$role = isset($atts['role'])&&$atts['role'] ? $atts['role'] : '';
if($role == 'subscriber'){ // 구독자 역할 이상일 때만 표시합니다.
if(!current_user_can('read')){
$content = '';
}
}
if($role == 'contributor'){ // 기여자 역할 이상일 때만 표시합니다.
if(!current_user_can('edit_posts')){
$content = '';
}
}
if($role == 'author'){ // 글쓴이 역할 이상일 때만 표시합니다.
if(!current_user_can('publish_posts')){
$content = '';
}
}
if($role == 'editor'){ // 편집자 역할 이상일 때만 표시합니다.
if(!current_user_can('edit_pages')){
$content = '';
}
}
if($role == 'admin'){ // 관리자 역할 이상일 때만 표시합니다.
if(!current_user_can('manage_options')){
$content = '';
}
}
return $content;
}
페이지나 글 등에서 숏코드는
아래처럼 사용해보세요.
[baztag role=subscriber]구독자 역할 이상일 때만 표시합니다.[/baztag]
[baztag role=contributor]기여자 역할 이상일 때만 표시합니다.[/baztag]
[baztag role=author]글쓴이 역할 이상일 때만 표시합니다.[/baztag]
[baztag role=editor]편집자 역할 이상일 때만 표시합니다.[/baztag]
[baztag role=admin]관리자 역할 이상일 때만 표시합니다.[/baztag]
고맙습니다.
상세한 답변 감사합니다. 이제야 확실히 이해가 되네요. 그럼 마지막으로 질문 하나만 더 하고 마무리 짓겠습니다.
현재 아래 페이지와 같이 3종류의 정기결제 플랜을 셋팅해 놓은 상태인데요, 모든 유료회원들이 플랜 종류에 상관없이 처음에는 구독자 권한을 가지게 되는 건가요?
https://antfx.kr/member/
플랜 등급에 맞게 권한을 주는 작업을 일일이 수동으로 변경해야하는 건지, 아니면 다른 방법이 있는지 궁금합니다.
예를들어, user-role 플러그인을 통해 《bronze》, 《silver》, 《gold 》라는 권한을 새로 만들었다고 가정하고, 신규 유료회원에게 이 권한(역할) 중 하나를 어떤식으로 적용해야 하는지 알고 싶습니다.
정기결제 시 사용자의 역할을 변경하고 싶다는 말씀이신지요?
코스모스팜 회원관리 플러그인 정기결제 기능을 사용하시면
결제를 한 사용자의 역할을 자동으로 변경할 수 있습니다.
코스모스팜 회원관리 플러그인에서 상품 등록 또는 수정 시 사용자 역할(Role)을 설정하시면
이용기간 동안 사용자의 역할(Role)을 변경할 수 있습니다.
이용기간이 만료되면 기존의 역할로 변경됩니다.
추가로, 워드프레스 사이트에서 회원가입 시 기본 역할을 설정하시려면
워드프레스 관리자 -> 설정 -> 일반 페이지에서
새 사용자를 위한 기본 규칙 설정을 확인해보시겠어요?
고맙습니다.
그렇다면 다행이네요. 귀찮게 해드려서 죄송합니다~
감사합니다.