코스모스팜 스레드

항목별 회원권한 설정하기

게시글 내에 항목 출력여부를 회원권한별로 설정하고 싶은데

어떻게 하면 되나요??

 

ex) 1. 항목 : 가나다라마바사 <- 정회원부터만 노출 가능

무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
  • 안녕하세요~^^

    말씀하신 항목은 KBoard 플러그인의 입력필드를 말씀하시는 건지요?

    게시글 본문에 표시되는 입력필드를 권한별로 표시하시려면

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_filter('kboard_document_add_option_value_field_data', 'my_kboard_document_add_option_value_field_data', 10, 3);
    function my_kboard_document_add_option_value_field_data($field, $content, $board){
    	if(is_user_logged_in() && $board->id == '1'){
    		$user_info = get_userdata(get_current_user_id());
    		$user_role = $user_info->roles[0];
    		
    		if(in_array($user_role, array('administrator', 'editor', 'author', 'contributor', 'subscriber'))){
    			return $field;
    		}
    		return array();
    	}
    	return $field;	
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 변경하신 후에 적용해보세요.

    array('administrator', 'editor', 'author', 'contributor', 'subscriber') 부분은 적절히 수정해보시겠어요?

    아래처럼 적용하시면 관리자, 편집자에만 입력필드를 게시글 본문에 표시합니다.

    array('administrator', 'editor')

     

    워드프레스 역할과 권한에 대한 자세한 내용은

    아래 링크를 참고해주세요.

    https://codex.wordpress.org/Roles_and_Capabilities

     

    User Role Editor 플러그인을 사용하시면 워드프레스 역할을 더 늘리고 역할들의 권한도 편집할 수 있습니다.

    고맙습니다.

  • 현재 얼티밋멤버를 사용하여 각 Role별로 권한이 주어진 상태입니다.

    해당 부분 추가 하였으나 별 변화가 없습니다. 

    document.php 파일 소스를 수정해야 하는게 아닌가요?

    입력필드를 몇가지 추가한 상태이고 추가한 입력필드 중 한 항목만 Role 권한 노출을 주고 싶습니다.

    다시 말해 글의 editor.php화면에서의 권한부여가 아닌 document.php에서의 특정항목에 대한 권한을 부여하여 노출하고 싶습니다.

    참고로 글쓰기는 관리자만 가능합니다.

  • 일부 입력필드만 게시글 본문 페이지(document.php)에서 권한에 따라 표시하시려면

    아래의 코드를 활용해보시겠어요?

    add_filter('kboard_document_add_option_value_field_data', 'my_kboard_document_add_option_value_field_data', 10, 3);
    function my_kboard_document_add_option_value_field_data($field, $content, $board){
    	if($board->id == '1' && $field['meta_key'] == '메타키'){
    		if(is_user_logged_in()){
    			$user_info = get_userdata(get_current_user_id());
    			$user_role = $user_info->roles[0];
    	
    			if(in_array($user_role, array('administrator', 'editor', 'author', 'contributor', 'subscriber'))){
    				return $field;
    			}
    		}
    		return array();
    	}
    	return $field;	
    }

    위의 코드에서 $board->id 부분은 이전과 동일하게 해주시면 됩니다.

    메타키 부분은 실제 입력필드의 메타키로 변경하신 후에 적용해보시겠어요?

    워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 입력필드 설정 페이지에서

    해당 입력필드의 메타키 필드에서 확인하실 수 있습니다.

    고맙습니다.

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)