게시판의 비밀글 작성시 관리자 외에는 비밀글 체크박스를 해제할 수 없게 할 수 없을까요?

안녕하세요 늘 답변 해주셔서 해결하고 있네요 감사드리고 있습니다.

다름이 아니라 게시판 비밀글 체크시 해제가 되지 않도록 하고 싶습니다. (disabled 기능)

 

비밀글 체크가 지금은 기본적으로 되어 있습니다. (kboard 입력 설정란에서 비밀글로 설정해둠)

이후 사용자(관리자를 제외한 모든 사용자)가 체크를 해제하여 게시글을 쓸 수 있는 가능성이 있어 비밀글 해제를 하지 못하도록 하고 싶은데요. 

다만 관리자는 체크 또는 해제가 가능하도록 하게 하고 싶습니다. (관리자가 해당 글의 댓글이 아닌 답글로 단 글을 봐야하기 때문입니다)

 

가능할까요?

 

아니면 글을 쓴 주인이 관리자의 답글은 비밀번호 없이 볼 수 있지만 다른 사람들은 볼 수 없게 하는 기능도 괜찮을 것 같습니다.

 

바쁘실텐데 늘 감사드립니다 ㅠ

 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    현재 사용 중이신 KBoard 플러그인의 버전 및 스킨에 따라 적용 방법이 다릅니다.

    KBoard 플러그인 버전과 어떤 스킨을 사용 중이신지 알려주시면

    도움 드릴 방법을 찾아보겠습니다.

    고맙습니다.

  • 안녕하세요 kboard 는 5.3.11 버전이며 스킨은 default 스킨 기준입니다~ 감사합니다

  • 안녕하세요.

    KBoard 플러그인 최신 버전의 Default 스킨을 사용 중이시라면

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

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

    add_filter('kboard_get_template_field_html', 'kboard_ask_one_get_template_field_html', 10, 4);
    function kboard_ask_one_get_template_field_html($html, $field, $content, $board){
    	if($field['meta_key'] == 'option' && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$meta_key = (isset($field['meta_key']) && $field['meta_key']) ? $field['meta_key'] : '';
    		$field_name = (isset($field['field_name']) && $field['field_name']) ? $field['field_name'] : $field['field_label'];;
    		$placeholder = (isset($field['placeholder']) && $field['placeholder']) ? $field['placeholder'] : '';
    		$default_value = (isset($field['default_value']) && $field['default_value']) ? $field['default_value'] : '';
    		
    		$boardBuilder = new KBoardBuilder($board->id);
    		
    		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($board->fields()->isUseFields($field['secret_permission'], $field['secret'])):?>
    					<?php if($board->isAdmin()):?>
    						<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 else:?>
    						<label class="attr-value-option"><input type="checkbox" name="secret" value="true" onclick="return false;"<?php if($content->secret):?> checked<?php endif?>> <?php echo __('Secret', 'kboard')?></label>
    					<?php endif?>
    				<?php endif?>
    				<?php if($board->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, $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()):?>
    		<input style="display:none" type="text" name="fake-autofill-fields">
    		<input style="display:none" type="password" name="fake-autofill-fields">
    		<!-- 비밀글 비밀번호 필드 시작 -->
    		<div class="kboard-attr-row kboard-attr-password secret-password-row"<?php if(!$content->secret):?> style="display:none"<?php endif?>>
    			<label class="attr-name" for="kboard-input-password"><?php echo __('Password', 'kboard')?> <span class="attr-required-text">*</span></label>
    			<div class="attr-value"><input type="password" id="kboard-input-password" name="password" value="<?php echo esc_attr($content->password)?>" placeholder="<?php echo __('Password', 'kboard')?>..."></div>
    		</div>
    		<!-- 비밀글 비밀번호 필드 끝 -->
    		<?php endif?>
    		<?php
    		$html = ob_get_clean();
    	}
    		
    	return $html;
    }

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

     

    비밀글 체크박스를 일반 사용자에겐 표시하지 않으시려면

    위의 코드에서 아래의 코드를 찾아서

    <label class="attr-value-option"><input type="checkbox" name="secret" value="true" onclick="return false;"<?php if($content->secret):?> checked<?php endif?>> <?php echo __('Secret', 'kboard')?></label>

    아래의 코드로 교체해보시겠어요?

    <input type="hidden" name="secret" value="true">

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요