게시판 작성시 입력필드 내용을 비공개로 변경시키는 질문

게시판 입력필드를

제목

담당자

업체명

비밀번호 

이렇게 되어 있는데요 

담당자를 필수로 기재하되 비공개를 선택사항으로 선택 하여 게시글 목록에서 비공개로 표시되도록 할수 있나요?

 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    담당자 필드는 어떻게 추가하신 건지요?

    KBoard 플러그인에서 입력필드 설정을 지원하는 스킨과

    지원하지 않는 스킨에 따라 코드가 다를 수도 있습니다.

    현재 사용 중이신 스킨과 KBoard 플러그인 버전 알려주시면

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

    고맙습니다.

  • 디버그 모드 활성화 시 에러 메시지는 표시되지 않는지요?

    해당 문제는 저희가 직접 확인을 해봐야 할 듯합니다.

    저희 고객지원 쪽 이메일로 워드프레스 관리자 계정과 FTP 접속 정보를 보내주시면 점검해드리겠습니다.

    고맙습니다.

  • 넵 했는데

    비밀번호 입력 필드가 여전히 안나옵니다.ㅜㅜ

  • 이상하군요.

    옵션 쪽 비밀글 설정과 관련된 코드가 없는데요.

    혹시 옵션 필드의 비밀글 표시 권한은 어떻게 되어있는지요?

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

    옵션 필드의 비밀글 설정을 확인해보시겠어요?

    제한없음으로 되어있다면 비회원에게도 표시되며

    로그인 사용자로 되어있다면 비회원에게는 표시되지 않습니다.

    직접선택으로 되어있다면 해당 역할의 사용자에게만 표시됩니다.

    고맙습니다.

  • 넵 http://punglim.co.kr/estimate/

    입니다.

    감사합니다.ㅜㅜ

    알려주신 공개 / 비공개 코드를 넣으면

    비밀번호 필드가 사라져 버립니다.

    않너으면 그대로 나오고요.ㅜㅜ

  • 안녕하세요.

    안내해드린 코드에는 비밀번호 관련 코드가 없습니다.

    option 필드 쪽 코드를 추가하신 게 있으신지요?

    비회원으로도 확인 가능한 페이지 주소 알려주시면 살펴보겠습니다.

    고맙습니다.

  • 아정말 감사드리고 죄송합니다.ㅜㅜ 여기까지는 해결이 되었는데요

    공개 / 비공개가 나타나지만

    문제는 비회원이 폼 입력시에 비밀글의 비밀번호 입력란이 완전히 사라져버려

    폼 입력시에 "비밀번호를 입력하세요"가 나오네요.ㅜㅜ

    왜 비밀번호 입력필드는 사라져 버렸는지.ㅜㅜ

    해결 방법이 있을까요?

  • 안녕하세요.

    PHP 함수명 중복 문제로 보입니다.

    워드프레스 필터는 여러 개 추가해서 사용할 수는 있지만

    PHP 함수명이 중복될 경우 정상적으로 동작하지 않습니다.

     

    기존 코드는 그대로 두시고 이전 댓글에 안내해드린 코드 중

    my_kboard_get_template_field_html 부분을 my_kboard_get_template_field_html1 이런 식으로

    모두 교체해서 확인해보시겠어요?

     

    추가로, 디버그 모드를 활성화하시면 에러 메시지를 확인하실 수 있습니다.

    디버그 모드를 활성화하는 방법은

    아래의 링크를 참고해보세요.

    워드프레스 에러 확인하기 - 디버그 모드 활성화 방법

    고맙습니다.

  • 안녕하세요 

    도움 감사합니다만.ㅜㅜ

    앞서 개인정보취급을 넣어서 충돌이 나서 인지 500에러가 뜹니다.ㅜㅜ

     

    앞서 있는 액션은 이렇습니다.

    add_filter('kboard_skin_fields', 'my_kboard_skin_fields', 10, 2);
    function my_kboard_skin_fields($fields, $board){
        
        if($board->id == '1'){ // 실제 적용될 게시판 ID 값으로 변경해주세요.
            
            if(!isset($fields['agree_checkbox'])){
                $fields['agree_checkbox'] = array(
                    'field_type' => 'agree_checkbox',
                    'field_label' => '개인정보 제공 및 활용 동의',
                    'class' => 'kboard-attr-checkbox',
                    'hidden' => '',
                    'meta_key' => '',
                    'field_name' => '',
                    'permission' => '',
                    'roles' => '',
                    'default_value' => '',
                    'placeholder' => '',
                    'required' => '',
                    'show_document' => '',
                    'description' => '',
                    'close_button' => 'yes'
                );
            }
        }
        
        return $fields;
    }

    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($field['field_type'] == 'agree_checkbox'){
            ob_start();
            ?>
            <div class="kboard-attr-row meta-key-<?php echo esc_attr($field['meta_key'])?> required">
                <label class="attr-name" for="agree_checkbox" style="display:none">
                    <span class="field-name"><?php echo esc_html($field['field_name'] ? $field['field_name'] : $field['field_label'])?></span>
                </label>
                <div class="attr-value" style="margin:0;">
                    <div style="margin: 20px 0; padding: 10px; height: 300px; background-color: #f2f2f2; overflow-y: auto;">
    <p>
    개인정보 수집ㆍ이용 동의(필수 사항)<br />
    (주)풍림은 「정보통신망 이용촉진 및 정보보호 등에 관한 법률」에 따라 다음과 같이 손님의 개인정보를 수집ㆍ이용합니다. 본 개인정보의 수집ㆍ이용에 동의하지 않으실 경우 (주)풍림의 웹 홈페이지, 모바일 홈페이지, 어플리케이션을 통한 회원가입이 불가능하고, 회원가입을 전제로 (주)풍림이 제공하는 서비스 기타 혜택을 받을 수 없습니다.</p>

    <p>1. 개인정보 수집ㆍ이용 목적<br />
    (1) 홈페이지 회원 가입 및 관리
    회원가입 의사확인, 본인 식별ㆍ인증, 회원자격 유지ㆍ관리, 서비스 부정이용 방지, 만 14세 미만 아동의 가입제한, 각종 고지ㆍ통지, 이용약관 위반 회원에 대한 이용제한 조치, 서비스의 원활한 운영에 지장을 미치는 행위 및 서비스 부정이용행위 제재, 가입 및 가입횟수 제한, 탈퇴의사 확인<br />

    (2) 재화 또는 서비스 제공<br />
    웹/모바일 홈페이지 구매 및 대금 결제, 배송 등 서비스 이용과 관련된 회원확인 등 문제해결<br />

    (3) 서비스 개선<br />
    웹 홈페이지, 모바일 홈페이지를 이용한 서비스를 이용자의 컴퓨터 등 정보통신기기에 최적화된 방식으로 제공할 수 있도록 개선, 서비스 개발, 개선 등 (주)풍림의 업무와 관련된 통계자료의 작성<br />

    (4) 민원 처리<br />
    민원인의 신원확인, 민원사항 확인, 사실조사를 위한 연락ㆍ통지, 처리결과 통보
    </p>

    <p>
    2. 수집하는 개인정보<br />
    (1)    회원가입정보: 성명(이름, 성), 휴대전화번호, 이메일, 생년월일, 생년월일, 주소<br />
    (2)    재화 또는 서비스 제공:<br />
    - 제품 배송 및 서비스 이행: 배송(조립)지 주소, 배송가능여부 판단, 휴대전화번호,<br />
    - 결제 정보 : 카드사, 카드번호, 구매정보 등 구매 및 대금 결제시 수집되는 정보<br />
    </p>
    <p>
    3. 개인정보의 보유ㆍ이용 기간<br />
    (1) 수집된 개인정보는 원칙적으로 회원가입 시부터 회원탈퇴 시까지 이용됩니다.<br />
    (2) 손님이 회원탈퇴를 하는 경우에는 법령에 따라 개인정보를 보유해야 하는 경우 또는 이미 발생한 민원처리 등 회원탈퇴 이후에도 개인정보를 이용하여야 하는 사유가 있는 경우를 제외하고는 개인정보를 지체 없이 관련 법령이 정한 바에 따라 파기합니다.
    </p>
                    </div>
                    <div style="text-align:center;">
                        <input type="hidden" class="required" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>" value="1">
                        <label><input type="checkbox" class="required" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>" value="1"> 개인정보 제공 및 활용에 동의합니다.</label>
                    </div>
                </div>
            </div>
            <?php
            $field_html = ob_get_clean();
        }
        
        return $field_html;
    }

    이것때문에 500 에러가 나는건지요?ㅜㅜ

    허면 방법이 있을까요?

  • KBoard 플러그인 입력필드 설정 기능으로 추가하신 건지요?

    추가하신 입력 필드 공개 여부를 선택하는 필드를 추가하고

    비공개 시 작성자와 관리자만 보게 하시려면

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

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

    add_action("kboard_get_template_field_html", "my_kboard_get_template_field_html", 10, 4);
    function my_kboard_get_template_field_html($template, $field, $content, $board){
    	if($board->id == '1' && isset($field['meta_key']) && $field['meta_key'] == 'manager'){
    		$meta_key = isset($field['meta_key'])&&$field['meta_key'] ? esc_attr($field['meta_key']) : '';
    		
    		ob_start();
    		?>
    		<div class="kboard-attr-row kboard-attr-text meta-key-<?php echo $meta_key?>">
    			<label class="attr-name" for="<?php echo $meta_key?>"><span class="field-name">담당자</span></label>
    			<div class="attr-value">
    				<input type="text" id="<?php echo $meta_key?>" class="" name="kboard_option_<?php echo $meta_key?>" value="<?php echo $content->option->{$meta_key}?>">
    				<select name="kboard_option_secret_manager">
    					<option value="">공개</option>
    					<option value="secret"<?php if($content->option->secret_manager):?> selected<?php endif?>>비공개</option>
    				</select>
    			</div>
    		</div>
    		<?php
    		$template = ob_get_clean();
    	}
    	return $template;
    }
    
    add_filter('kboard_document_add_option_value_field_html', 'my_kboard_document_add_option_value_field_html', 10, 4);
    function my_kboard_document_add_option_value_field_html($html, $field, $content, $board){
    	if($board->id == '1' && isset($field['meta_key']) && $field['meta_key'] == 'manager'){
    		if($content->option->secret_manager){
    			if($content->member_uid != get_current_user_id() && !$board->isAdmin()){
    				$html = '';
    			}
    		}
    	}
    	return $html;
    }

    위의 예제 코드는 입력 필드의 메타키를 manager로 설정하고 작성했습니다.

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 모두 적용하시고

    $field['meta_key'] == 'manager' 부분은 실제 입력 필드 메타키로 모두 적용해보시겠어요?

     

    실제 위의 코드를 적용하면 담당자 입력 필드 옆에 공개/비공개 선택할 수 있는 필드가 추가되고

    공개로 설정할 경우 해당 입력 필드가 모든 사용자에게 공개되며

    비공개로 설정할 경우 작성자 본인과 게시판 관리자만 해당 입력 필드를 확인할 수 있습니다.

    고맙습니다.

  • 현재 사용중인 스킨은 default 스킨이며

     버전은  5.3.10 입니다.

    입력필드는 텍스트로 하였습니다.

  • 감사합니다^^

    해결하였습니다^^

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