코스모스팜 스레드

로그인 후에 익명으로 게시판에 글쓰기

안녕하세요~^^

회원제 사이트라서 회원가입하고 로그인은 하고,

그 가입된 회원들만 익명으로 글쓰기를 할 수 있는 게시판을 만들려고 합니다.

추후 글 수정을 위해서는 글 작성시 (작성자, 패스워드, 내용) 입력창이 게시판에 필수 기능일 것 같은데

어떻게 해야할지 몰라 문의드립니다.

유저관리 플러그인은 얼티밋 멤버를 사용중입니다.

 

미리 감사합니다.

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

    KBoard 플러그인에서 로그인 사용자가 게시글 등록 시

    작성자, 패스워드를 별도로 입력하지 않아도

    본인이 쓴 글이라면 수정 및 삭제 가능합니다.

    타인이 쓴 글이라면 수정 및 삭제가 불가능하며

    관리자는 모든 사용자의 게시글을 수정 및 삭제하실 수 있습니다.

     

    KBoard 플러그인에서 익명 게시판 추가하는 방법은

    아래의 링크를 참고해보시겠어요?

    워드프레스에 익명 게시판 추가하는 방법

    고맙습니다.

  • 답변감사합니다.

    그런데 제가 물어본건 

    로그인 한 유저가 게시판에 글을 쓸때 다시 한번 (작성자, 비밀번호)를 입력해서 

    추후 게시글 수정시에도 아이디 체크 없이 비밀번호만 정확히 입력하면 게시글이 수정될 수 있도록 하려고 하는 작업입니다.

    혹시 가능할까요?

    (로그인 정보는 처음 페이지 접근할때만 사용하고 게시글 처리에는 (작성자, 비밀번호)만 사용해서 글쓰기, 수정, 삭제 가능)

    요건이 이래서요..

     

    답변 부탁드립니다. 감사합니다.

  • 안녕하세요.

    이전 댓글에 말씀드린 것처럼 KBoard 플러그인에서

    로그인 사용자는 본인이 쓴 글을 별도의 체크 없이 수정, 삭제할 수 있습니다.

    어떤 이유로 로그인 사용자가 작성자와 비밀번호를 입력해서 게시글 등록, 수정, 삭제하려는 지 알려주시겠어요?

    저희도 좋은 방법이 있을지 고민해보겠습니다.

    고맙습니다.

  • 답변감사드립니다.

    구현하려는 홈페이지에 여러 종류의 게시판이 있는데

    그 중에 하나의 게시판은 완전 익명(관리자도 추적 못하게..) 게시판으로 하려고 합니다.

    페이지에 접근은 로그인한 사용자만 할수 있도록 하고 

    게시글을 쓰거나 수정하는건 (작성자, 비밀번호)로만 관리 할수도 있도록 하려고요.

    만약 게시글을 작성, 수정을 (작성자, 비밀번호) 로 할 수 있으면

    가능하다면) 익명 게시판 게시글 작성시마다 트리거를 발생시켜

    mysql 에 wp_kboard_board_content 에 익명게시판의 id의 member_uid 를 0으로 만드는 것도 고민중입니다.

     

    결국 완전 익명 게시판을 구현하는게 목표인데 

    이게 가능할까요..

  • 말씀하신 것처럼 적용하시려면

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

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

    add_filter('kboard_get_template_field_html', 'my_kboard_get_template_field_html', 10, 4);
    function my_kboard_get_template_field_html($field_html, $field, $content, $board){
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$fields = $board->fields();
    		
    		$meta_key = isset($field['meta_key'])&&$field['meta_key'] ? esc_attr($field['meta_key']) : '';
    		$field_name = (isset($field['field_name'])&&$field['field_name']) ? esc_html($field['field_name']) : ((isset($field['field_label'])&&$field['field_label']) ? esc_html($field['field_label']) : '');
    		$default_value = isset($field['default_value'])&&$field['default_value'] ? esc_attr($field['default_value']) : '';
    		$placeholder = isset($field['placeholder'])&&$field['placeholder'] ? esc_attr($field['placeholder']) : '';
    		
    		if($field['field_type'] == 'author'){
    			ob_start();
    			?>
    		<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> required">
    			<label class="attr-name" for="kboard-input-member-display"><span class="field-name"><?php echo esc_html($field_name)?></span> <span class="attr-required-text">*</span></label>
    			<div class="attr-value"><input type="text" id="kboard-input-member-display" name="member_display" class="required" value="<?php echo $content->member_display?esc_attr($content->member_display):esc_attr($default_value)?>"<?php if($placeholder):?> placeholder="<?php echo esc_attr($placeholder)?>"<?php endif?>></div>
    		</div>
    		<div class="kboard-attr-row kboard-attr-password required">
    			<label class="attr-name" for="kboard-input-password"><span class="field-name"><?php echo __('Password', 'kboard')?></span> <span class="attr-required-text">*</span></label>
    			<div class="attr-value"><input type="password" id="kboard-input-password" name="password" class="required" value="<?php echo esc_attr($content->password)?>" placeholder="<?php echo __('Password', 'kboard')?>..."></div>
    		</div>
    		<?php
    		$field_html = ob_get_clean();
    		}
    		elseif($field['field_type'] == 'option'){
    			ob_start();
    			?>
    			<div class="kboard-attr-row <?php echo esc_attr($field['class'])?>">
    				<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span></label>
    				<div class="attr-value">
    					<?php if($fields->isUseFields($field['secret_permission'], $field['secret'])):?>
    						<label class="attr-value-option"><input type="checkbox" name="secret" value="true" onchange="kboard_toggle_password_field(this)"<?php if($content->secret):?> checked<?php endif?>> <?php echo __('Secret', 'kboard')?></label>
    					<?php endif?>
    					<?php if($fields->isUseFields($field['notice_permission'], $field['notice'])):?>
    						<label class="attr-value-option"><input type="checkbox" name="notice" value="true"<?php if($content->notice):?> checked<?php endif?>> <?php echo __('Notice', 'kboard')?></label>
    					<?php endif?>
    					<?php do_action('kboard_skin_editor_option', $content, $board, $board->boardBuilder)?>
    					<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
    				</div>
    			</div>
    			<?php if(!$board->viewUsernameField()):?>
    			<div style="overflow:hidden;width:0;height:0;">
    				<input style="width:0;height:0;background:transparent;color:transparent;border:none;" type="text" name="fake-autofill-fields">
    				<input style="width:0;height:0;background:transparent;color:transparent;border:none;" type="password" name="fake-autofill-fields">
    			</div>
    			<?php endif?>
    			<?php
    			$field_html = ob_get_clean();
    		}
    	}
    	return $field_html;
    }
    
    add_action('kboard_pre_document_insert', 'my_kboard_pre_document_insert', 10, 4);
    function my_kboard_pre_document_insert($content_uid, $board_id, $content, $board){
    	if($board_id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$content->member_uid = 0;
    	}
    }

    위의 코드에서 $board->id == '1' 부분과 $board_id == '1' 부분은 실제 게시판 id로 적용해주세요.

     

    위 코드는 입력 필드 설정을 지원하는 스킨에서 사용 가능하며

    입력 필드 설정을 지원하지 않는 스킨을 사용 중이라면 스킨 파일을 수정해주셔야 할 듯합니다.

    고맙습니다.

  • 답글 정말 감사합니다.

    그런데 위와 같이 적용하니 글 작성은 가능한데 

    (글수정)(글삭제) 버튼이 member_uid = 0 인 사람만 나타납니다.

    (글수정)(글삭제) 버튼은 로그인한 유저 누구한테나 나타나야하고

    (글수정)(글삭제) 버튼을 누르면 비밀번호 확인창이 나타나서 

    처음 글작성시 입력한 비밀번호와 동일하면 글수정,글삭제를 할 수 있도록 해야할거 같아서요.

     

    그리고 글에 댓글에도 동일한 로직이 되어야하는데 이것도 좀 알려주실수 있을까요.

     

    정말 감사합니다.

  • 말씀하신 것처럼 적용하시려면 단순히 코드 몇 줄로는 해결되지 않을 듯합니다.

    저희도 연구해보고 좋은 방법이 있다면 안내해드리겠습니다.

    고맙습니다.

  • 네 감사합니다.

    혹시 추후에라도 좋은 방안 있으면 답글 부탁드립니다.

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