게시판 필드 추가 후 본문에 출력방법 문의드립니다

안녕하세요, 블로그에 올려주신 필드 추가하는 방법을 통해 필드를 게시판에 몇개 추가한 상태입니다.

그런데 추가한 필드가 input이 여러개 있는 필드인데, (전화번호 입력하는 3칸, 카드번호 입력하는 4칸 등등)

본문에 표시될때는 첫번째 input에 입력한 내용만 표시되어 해결하지 못하고 있습니다.

 

여러 개의 input으로 나눈 경우에도 본문에 모두 출력하는 방법이 있을까요?

functions.php 파일에 추가한 코드는 아래와 같습니다.

add_filter('kboard_get_template_field_html', 'my_kboard_get_template_field_html8', 10, 4);
function my_kboard_get_template_field_html8($field_html, $field, $content, $board){
    
    if($field['field_type'] == 'card-number'){
        ob_start();
        ?>            
        <div class="kboard-attr-row meta-key-<?php echo esc_attr($field['meta_key'])?>">
            <label class="attr-name" for="card-number">카드번호</label>
            <div class="attr-value">
                <input type="text" id="card-number1" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>" onKeyup="inputMoveNumber(this);" minlength="4" maxlength="4">&nbsp;-&nbsp;
                <input type="text" id="card-number2" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>" onKeyup="inputMoveNumber(this);" minlength="4" maxlength="4"/>&nbsp;-&nbsp;
                <input type="text" id="card-number3" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>" onKeyup="inputMoveNumber(this);" minlength="4" maxlength="4"/>&nbsp;-&nbsp;
                <input type="text" id="card-number4" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>"  minlength="4" maxlength="4"/>
            </select>
            </div>
        </div>
        <script type="text/javascript">
        function inputMoveNumber(num) {
            if(isFinite(num.value) == false) {
                alert("카드번호는 숫자만 입력할 수 있습니다.");
                num.value = "";
                return false;
            }
        }
        </script>
        <?php
        $field_html = ob_get_clean();
    }
    
    return $field_html;
}

 

이 게시물에 있는 아래 코드를 수정 활용하여 본문을 수정하려 했으나
해당 코드 입력 시 홈페이지 접속이 아예 되지 않습니다. 뭔가 오류가 있는 것 같은데 원인을 모르겠네요..

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($value_html, $field, $content, $board){
	
	if($field['field_type'] == 'address'){
		$value_html = sprintf('<div class="kboard-document-add-option-value meta-key-%s"><span class="option-name">%s</span> : %s</div><hr>', $field['field_type'], $field['field_name'], "({$content->option->postcode}) {$content->option->address}");
	}
	
	return $value_html;
}
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

    필드의 name을 서로 다르게 해 주셔야 모두 입력받으실 수 있습니다.

    아래 예제를 보시면 1~4번 번호를 추가해서 모두 name이 다르게 될 것을 보실 수 있겠습니다.

    <input type="text" id="card-number1" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>1" onKeyup="inputMoveNumber(this);" minlength="4" maxlength="4">&nbsp;-&nbsp;
    <input type="text" id="card-number2" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>2" onKeyup="inputMoveNumber(this);" minlength="4" maxlength="4"/>&nbsp;-&nbsp;
    <input type="text" id="card-number3" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>3" onKeyup="inputMoveNumber(this);" minlength="4" maxlength="4"/>&nbsp;-&nbsp;
    <input type="text" id="card-number4" name="kboard_option_<?php echo esc_attr($field['meta_key'])?>4"  minlength="4" maxlength="4"/>

     

    실제 출력 시에는 아래처럼 하실 수 있겠습니다.

    아래 코드는 예제 이기 때문에 옵션의 이름은 실제 사용하시는 것으로 바꿔주셔야 합니다.

    <?php
    echo $content->option->meta_key1;
    echo $content->option->meta_key2;
    echo $content->option->meta_key3;
    echo $content->option->meta_key4;
    ?>

     

    그리고 필드의 모양을 편집하시려면 kboard_get_template_field_html 액션을 사용하시는 방법도 있지만

    스킨에 직접 파일을 만들어줄수도 있습니다.

    스킨에다가

    editor-field-meta_key1.php
    editor-field-meta_key2.php
    editor-field-meta_key3.php
    editor-field-meta_key4.php

    이런 식으로 메타키 별로 레이아웃 파일을 만들어서 사용하실 수 있습니다.

    메타키와 동일한 파일 이름이 있다면 자동으로 해당 파일을 불러옵니다.

     

    코드를 추가한 다음 홈페이지가 제대로 표시되지 않는다면 어떠한 에러가 발생한 듯합니다.

    원인이 다양하여 에러 메시지를 봐야만 할 수 있겠습니다.

    디버그 모드를 활성화해서 에러 메시지가 있는지 확인해보시겠어요?

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

    고맙습니다.

  • 도와주신 덕분에 본문 출력까지 성공하였습니다. 감사합니다!!

    한가지 더 문의드리자면 지금 추가한 내용들은 본문 맨 아래에 출력되는데,

    순서를 바꿀수가 있을까요?

     

    현재 document.php 파일에 아래와 같은 코드가 추가되어 있습니다.

    <div class="kboard-content" itemprop="description">
    				<div class="content-view">				
    					<?php echo $content->getDocumentOptionsHTML()?>
    					<?php echo $content->content?>
    					<p>카드번호: <?php
    					echo $content->option->{'card-number1'}.'-';
    					echo $content->option->{'card-number2'}.'-';
    					echo $content->option->{'card-number3'}.'-';
    					echo $content->option->{'card-number4'};
    					?></p>
    					<p>카드유효기간: <?php
    					echo $content->option->{'card-until1'}.'년 ';
    					echo $content->option->{'card-until2'}.'월';
    					?></p>
    				</div>
    			</div>
  • 순서를 어떤 식으로 변경하고 싶으신 건지요?

    올려주신 코드 중 아래의 코드가 게시글 본문을 표시하는 코드입니다.

    <?php echo $content->content?>

    본문 위에 표시하고 싶으시다면 위의 코드 상단에 코드를 추가해보시겠어요?

    고맙습니다.

  • 게시글 기준으로 게시글 위나 게시글 아래에만 위치가 가능한건가요?

    게시글 본문 내용 중간에 표시하는 것은 어려울까요?
    본문의 다른 필드들 사이에 위치시키고 싶습니다.

  • 게시글 본문 내용 안에서 표시되게 하시려면

    숏코드를 활용해주셔야 할 듯합니다.

    별도의 숏코드를 만드신 후 게시글 본문에서 표시하고 싶은 위치에 숏코드를 추가하는 방식입니다.

    워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 고급설정 탭에서

    게시글 숏코드(Shortcode) 실행 설정을 하실 수 있습니다.

    관리자가 아닌 사용자가 워드프레스 내장 기능을 사용할 수 있어 보안에 주의해주셔야 합니다.

     

    워드프레스 숏코드에 대한 자세한 내용은

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

    https://codex.wordpress.org/Shortcode_API

    고맙습니다.

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