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

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

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

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

AI 상담