단락별 가입자(회원) 권한 변경

한가지 더 질문드립니다.

예를들어 한 포스팅(게시글) 을 '기승전결'로 나누어서 작성했다고 가정하고, '승'부분은 구독자에게만 '전'부분은 기여자, '결'부분은 글쓴이만 열람 가능하도록 설정하는 방법이 있나해서 여쭤봅니다.  제 사이트의 유료회원 플랜이 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줄 까지 (모든 내용) 읽을 수 있는 권한을 주고 싶은데, 이럴 경우에도 제시해준 코드로 실현 가능한지요?

    그리고, 이게 가능할 경우 편집기 안에서는 어떤 기능을 사용하여 구분선을 설정해야 하는지 알려주시면 감사하겠습니다.

  • 그렇다면 다행이네요.  귀찮게 해드려서 죄송합니다~

    감사합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기