게시판 커스텀 필드 추가시 본문에서 조회가 안되는 현상 문의드립니다.

안녕하세요. 투표 기능을 만들기 위해서 게시판 필드 커스텀 중 해결되지 않는 부분이 있어 문의드립니다.

https://blog.cosmosfarm.com/archives/214/kboard-%ec%bc%80%ec%9d%b4%eb%b3%b4%eb%93%9c-%ea%b2%8c%ec%8b%9c%ed%8c%90%ec%97%90-%ec%83%88%eb%a1%9c%ec%9a%b4-%ed%95%84%eb%93%9c-%ec%b6%94%ea%b0%80%ed%95%98%ea%b8%b0/

구현은 위 링크를 참조했습니다.

먼저, 아래와 같이 입력 필드를 설정했습니다.

add_filter('kboard_skin_fields', 'survey_kboard_skin_fields', 10, 2);
function survey_kboard_skin_fields($fields, $board){
    
    if($board->id == '1'){ // 실제 적용될 게시판 ID 값으로 변경해주세요.
        
        if(!isset($fields['survey'])){
            $fields['survey'] = array(
                'field_type' => 'survey',
                'class' => 'kboard-attr-text',
                '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', 'survey_kboard_get_template_field_html', 10, 4);
function survey_kboard_get_template_field_html($field_html, $field, $content, $board){
    
    if($field['field_type'] == 'survey'){
        
        ob_start();
        ?>
        <div class="kboard-attr-row">
			<input type="hidden" name="kboard_option_dynamic_field_index" value="<?php echo intval($content->option->dynamic_field_index)?>">		
			
            <label class="attr-name" for="kboard_option_survey">투표</label>
            <div class="attr-value">
				
                <button type="button" id='survey_add_btn' class="kboard-default-button-small" onclick="kboard_survey_add_question()">+</button>
				<button type="button" id='survey_remove_btn' class="kboard-default-button-small" onclick="kboard_survey_remove_question()">-</button>
            </div>
        </div>
        <script>
        function kboard_survey_add_question(){
			var index = parseInt(jQuery('input[name=kboard_option_dynamic_field_index]').val()) + 1;
			jQuery('input[name=kboard_option_dynamic_field_index]').val(index);
			var name = 'kboard_option_survey' +  index;
			var tag = '<input type="text" class="kboard_option_survey" name="'+name+'" value="" placeholder="향을 입력해 주세요" style="width:150px"> <br>';
			jQuery("#survey_add_btn").before(jQuery.parseHTML(tag));

        }
		function kboard_survey_remove_question(){
			var q_list = jQuery('.kboard_option_survey');
			if(q_list.length >0){
				jQuery(q_list[q_list.length-1]).next().remove();
				jQuery(q_list[q_list.length-1]).remove();
				
			}
			var index = parseInt(jQuery('input[name=kboard_option_dynamic_field_index]').val()) - 1;
			jQuery('input[name=kboard_option_dynamic_field_index]').val(index);
		}
        </script>
        <?php
        $field_html = ob_get_clean();
    }
    
    return $field_html;
}

여기까지 작성을 했을때는 db 상에도 아래 이미지와 같이 데이터가 잘 들어가고, 게시판에 필드도 잘 생성이 됩니다.

db 이미지

게시판 이미지

 

그런데 작성된 게시글 본문에서는 아예 데이터 조회가 되지 않습니다. 

아래와 같이 echo만 찍어봐도 게시글 본문에서는 전혀 확인이 되지 않네요.

add_filter('kboard_document_add_option_value_field_html', 'survey_kboard_document_add_option_value_field_html', 10, 4);
function survey_kboard_document_add_option_value_field_html($value_html, $field, $content, $board){
    echo "TEST1";
    if($field['field_type'] == 'survey'){
		echo 'TEST2';
    }
	$value_html = '';
    return $value_html;
}

게시글 조회 테스트

 

며칠간 분석해보았지만, 원인을 도저히 못찾겠습니다.

echo도 안되는 걸 보면 아예 등록한 필터가 작동하지 않는 것 같은데, 무엇이 원인일지 번거로우시겠지만 확인하여 주시면 감사하겠습니다.

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