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