글쓰기 강제로 비밀글 등록하는 방법 좀 알려주세요

안녕하세요. 모든 글을 비밀글로 작성할 수 있게 하는 동시에 비밀글+체크박스줄만 보이지 않게 하고 싶습니다.

2. 비밀글+체크 박스 이 한 줄만 안보이기만 하게 설정하고 싶습니다. / 줄만 안보일뿐 비밀글 기능은 정상 작동되야 합니다.

3. 비밀번호 입력창은 있어야 됩니다.

어떻게 해야 될까요?

스킨은 forum-one 입니다

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

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

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

    add_filter('kboard_get_template_field_html', 'kboard_get_template_field_html_20210326', 10, 4);
    function kboard_get_template_field_html_20210326($layout, $field, $content, $board){
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$fields = $board->fields();
    		$builder = new KBoardBuilder($board->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'];;
    		
    		if(isset($field['meta_key']) && $field['meta_key'] == 'option'){
    			ob_start();
    			?>
    			<?php if($fields->isUseFields($field['notice_permission'], $field['notice'])):?>
    			<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">
    					<label class="attr-value-option" style="display: none;"><input type="checkbox" name="secret" value="true" onchange="kboard_toggle_password_field(this)" checked> <?php echo __('Secret', 'kboard')?></label>
    						<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 do_action('kboard_skin_editor_option', $content, $board, $builder)?>
    					<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
    				</div>
    			</div>
    			<?php endif?>
    			<?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>
    			<!-- 비밀글 비밀번호 필드 시작 -->
    			<div class="kboard-attr-row kboard-attr-password secret-password-row 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" class="required" name="password" value="<?php echo esc_attr($content->password)?>"></div>
    			</div>
    			<!-- 비밀글 비밀번호 필드 끝 -->
    			<?php endif?>
    			<?php
    			$layout = ob_get_clean();
    		}
    	}
    	return $layout;
    }

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

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

    고맙습니다.

  • 감사합니다.

    비밀번호를 입력을 안해도 저장이 됩니다 어떻게 해야하나요?

  • 이전 댓글에 안내해드린 코드에 비밀번호 필수를 적용해서 수정해두었습니다.

    코드 다시 적용해보시겠어요?

    고맙습니다.

  • 감사합니다... 너무 번거롭게 해서 죄송합니다

    마지막으로 한 가지만 부탁드립니다.

    일단 필수입력은 되는데요.. 관리자 및 작성자만 그 글을 봐야 하는데 다른사람들도 볼 수가 있더라고요..

    다른사람들은 타 글을 볼 때 비밀번호 입력 창이 떠야 할 것 같습니다.

    마지막으로 부탁드립니다 

  • KBoard 플러그인에서 비밀글에 비밀번호를 입력해서 본문 내용을 볼 경우

    세션에 게시글 정보를 일시적으로 저장하며

    브라우저를 종료하기 전까지는 비밀번호 재입력 없이도 게시글을 볼 수 있습니다.

    브라우저를 껐다 다시 키게 되면 비밀번호를 다시 요청하게 됩니다.

    그리고 관리자 또는 작성자(로그인 사용자)는 비밀번호를 입력하지 않고도 비밀글을 볼 수 있습니다.

     

    시크릿 브라우저로 비회원 게시글 읽기 테스트를 할 경우,

    시크릿 브라우저가 여러 개 띄워져 있다면 세션이 남아있을 수도 있기 때문에

    모든 시크릿 브라우저를 종료하신 후에 테스트를 해보시겠어요?

    고맙습니다.

  • 말씀하신대로 해봤습니다.

    그래도 똑같은 증상입니다.

    비밀번호 입력하면 잠금표시도 안되고 누구나 볼 수 있는 상황입니다..

    죄송합니다.

    한번 더 부탁드립니다..

  • 기존의 코드 대신

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

    add_filter('kboard_get_template_field_html', 'kboard_get_template_field_html_20210326', 10, 4);
    function kboard_get_template_field_html_20210326($layout, $field, $content, $board){
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$fields = $board->fields();
    		$builder = new KBoardBuilder($board->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'];;
    		$default_value = (isset($field['default_value']) && $field['default_value']) ? $field['default_value'] : '';
    		
    		if(isset($field['meta_key']) && $field['meta_key'] == 'option'){
    			ob_start();
    			?>
    			<?php if($fields->isUseFields($field['notice_permission'], $field['notice'])):?>
    			<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">
    					<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 do_action('kboard_skin_editor_option', $content, $board, $builder)?>
    					<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
    				</div>
    			</div>
    			<?php endif?>
    			<?php if(!$board->viewUsernameField()):?>
    			<input type="hidden" name="secret" value="true">
    			<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>
    			<!-- 비밀글 비밀번호 필드 시작 -->
    			<div class="kboard-attr-row kboard-attr-password secret-password-row 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" class="required" name="password" value="<?php echo esc_attr($content->password)?>"></div>
    			</div>
    			<!-- 비밀글 비밀번호 필드 끝 -->
    			<?php endif?>
    			<?php
    			$layout = ob_get_clean();
    		}
    		else if(isset($field['meta_key']) && $field['meta_key'] == 'author'){
    			ob_start();
    			?>
    			<input type="hidden" name="secret" value="true">
    			<?php if($field['permission'] == 'always_visible' || (!$field['permission'] && $board->viewUsernameField())):?>
    				<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>
    			<?php elseif($field['permission'] == 'always_hide'):?>
    				<input type="hidden" id="kboard-input-member-display" name="member_display" value="<?php echo $content->member_display?esc_attr($content->member_display):esc_attr($default_value)?>">
    			<?php endif?>
    			<?php if($board->viewUsernameField()):?>
    				<div class="kboard-attr-row kboard-attr-password">
    					<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
    			$layout = ob_get_clean();
    		}
    	}
    	return $layout;
    }

    고맙습니다.

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