게시판 리스트를 다른 게시판 셀렉트박스에 나타나도록 하는 방법문의

안녕하세요

워드프레스 게시판 때문에 불편함과 고생을 하다

케이보드를 알게 되어 고맙고 감사한 마음으로 잘 사용하고 있는 사용자입니다.

케이보드 커뮤니티도 알게되어 좋은 정보를 참.. 많이 배우고 있습니다.

 

 

현재 만들고 있는 홈페이지에서 케이보드 디폴트 스킨으로는 구현이 안되어

스킨을 수정하여 등록용 게시판을 만들었습니다.

스킨 수정내용은 추가

여러개의 입력필드, 카테고리 기능 사용을 하였고,

리스트 화면에서 추가한 입력필드중에 필요한 특정필드를 리스트항목으로 사용하였습니다.

등록용 게시판입니다.

 

https://imgur.com/2BAHbrv

 

어려움을 겪고 있는 부분은 위에서 만든 등록용 게시판의 리스트를

신청용 게시판의 글쓰기 화면셀렉트 박스로 가져오는 것입니다.

추가로 처리해야할 기능으로 등록용 게시판카테고리 기능으로 추가한 옵션중 특정 옵션의 경우는 제외되어야 합니다.

 

아직까지 지식과 경험이 부족하여 혼자서는 해결이 어렵습니다.

많은 사람들의 여러 문의와 요청으로 빠르시겠지만, 의견과 도움 부탁드리겠습니다.

감사합니다.

 

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

    KBoard 플러그인에서 입력 필드 설정을 지원하는 스킨을 사용 중이시라면

    kboard_get_template_field_html 필터로 게시글 작성 페이지에 표시되는 입력 필드를 편집하실 수 있습니다.

    KBoard(케이보드) 게시판에 새로운 필드 추가하기도 참고해보세요.

     

    게시글 정보를 불러오기 위해 쿼리를 요청하시려면 $wpdb 기능을 사용해보시겠어요?

    https://codex.wordpress.org/Class_Reference/wpdb

     

    아래 코드를 활용하면 1번 게시판의 게시글을 가져올 수 있습니다.

    global $wpdb;
    	
    $board_id = '1'; // 게시판 id
    
    $where[] = "`board_id`='{$board_id}'";
    // 검색이 아니라면 답글이 아닌 일반글만 불러온다.
    $where[] = "`parent_uid`='0'";
    // 공지사항이 아닌 게시글만 불러온다.
    $where[] = "`notice`=''";
    // 휴지통에 없는 게시글만 불러온다.
    $where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    // 카테고리1이 마감이 아닌 게시글만 불러온다.
    $where[] = "`category1` != '마감'";
    
    $where = implode(' AND ', $where);
    $results = $wpdb->get_results("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE {$where}");

    고맙습니다.

  • 답변해주신

    KBoard(케이보드) 게시판에 새로운 필드 추가하기

    페이지에서 필드를 추가하는 방법을 배웠습니다.

     

    워드프레스 게시판 KBoard(케이보드) 새로운 입력 필드 추가 방법 (커스터마이징)

    에서 editor.php 파일과 document.php 파일에 셀렉트(select)  형식을 추가하는 내용도

    하였습니다.

     

    알려주시는 global $wpdb; 코드를 사용하여 editor.php 파일에 다음처럼  코드를 작성한 후 

    <?php
    global $wpdb;
    $board_id = '10'; // 게시판 id
    $where[] = "`board_id`='{$board_id}'";
    $where = implode(' AND ', $where);
    $results = $wpdb->get_results("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE {$where}");

    var_dump($results);

    ?>

    테스트로 var_dump($results); 를 이용하여 테스트하면 array 값이 나오는 것까지 테스트를 하였습니다.

    불러온 값인 게시판 리스트를 셀렉트(select) 형식으로 나타나게 하는 방법은 모르겠습니다.


    워드프레스 게시판 KBoard(케이보드) 새로운 입력 필드 추가 방법 (커스터마이징) 에 있는 

    <!-- editor.php 파일에 입력 필드 추가 -->

    <div class="kboard-attr-row">

       <label class="attr-name" for="kboard_option_inquiry_type">문의 유형</label>

       <div class="attr-value">

           <select id="kboard_option_inquiry_type" name="kboard_option_inquiry_type">

               <option value="">선택하세요</option>

               <option value="제작의뢰"<?php if($content->option->inquiry_type == '제작의뢰'):?> selected<?php endif?>>제작의뢰</option>

               <option value="홍보의뢰"<?php if($content->option->inquiry_type == '홍보의뢰'):?> selected<?php endif?>>홍보의뢰</option>

       </select>

       </div>

    </div>

    셀렉트(select) 을 사용하려 하였으나, 어떻게 수정을 해야 하는지 모르겠습니다.

     

     

     

     

  • 안녕하세요.

    PHP foreach문을 활용하시면 셀렉트 박스에 불러온 게시글을 반복해서 표시하실 수 있습니다.

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

    <?php
    global $wpdb;
    $board_id = '10'; // 게시판 id
    $where[] = "`board_id`='{$board_id}'";
    $where = implode(' AND ', $where);
    $results = $wpdb->get_results("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE {$where}");
    ?>
    <div class="kboard-attr-row">
    	<label class="attr-name" for="kboard_option_content_title">문의 유형</label>
    	<div class="attr-value">
    		<select id="kboard_option_content_title" name="kboard_option_content_title">
    			<option value="">선택하세요</option>
    			<?php foreach($results as $item):?>
    				<?php
    				$document = new KBContent();
    				$document->initWithUID($item->uid);
    				?>
    				<option value="<?php echo $document->title?>"<?php if($content->option->content_title == $document->title):?> selected<?php endif?>><?php echo $document->title?></option>					
    			<?php endforeach?>
    		</select>
    	</div>
    </div>

    고맙습니다.

  • 작성해 주신 위 코드를 적용하니 되었습니다.

    감사합니다.

     

    몇가지 추가로 필요한 부분이 있습니다.

    1. 위 선택박스를 필수로 적용해야 해서 

            <div class="kboard-attr-row kboard-attr-title required">
                <label class="attr-name" for="kboard_option_content_title ">신청 가능한 행사</label>
                <div class="attr-value">
                    <select id="kboard_option_content_title" name="kboard_option_content_title">
                        <option value="">신청 가능한 행사</option>
                        <?php foreach($results as $item):?>
                            <?php
                            $document = new KBContent();
                            $document->initWithUID($item->uid);
                            ?>
                            <option value="<?php echo $document->title ?>"<?php if($content->option->content_title == $document->title):?> selected<?php endif?>><?php echo $document->title?></option>
                        <?php endforeach?>
                    </select>
                </div>
            </div>

    위 첫줄 class에 required 를 추가하면 될려나.. 하고 테스트하였으나 제대로 저장되지 않네요

    선택하지 않고 저장버튼을 클릭해도 경고창이 뜨고

    선택을 하고 저장버튼을 클릭해도 경고창이 뜨네요

      

     

    2. 선택하지 않고 저장버튼을 누르면 경고창에 

    "은(는) 필수입니다." 라는 메세지가 나옵니다. 

    "신청 가능한 행사 은(는) 필수입니다."  이렇게 나오질 안네요.

     

    아직 모르는 것이 많아 어려움이 많다보니 케이보드와 PHP 공부를 한참해야 한다는 생각만 자주드네요...

     

  • 안녕하세요.

    필수 체크를 하시려면

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

    <div class="kboard-attr-row kboard-attr-title required">
    	<label class="attr-name" for="kboard_option_content_title"><span class="field-name">신청 가능한 행사</span></label>
    	<div class="attr-value">
    		<select id="kboard_option_content_title" name="kboard_option_content_title" class="required">
    			<option value="">신청 가능한 행사</option>
    			<?php foreach($results as $item):?>
    				<?php
    				$document = new KBContent();
    				$document->initWithUID($item->uid);
    				?>
    				<option value="<?php echo $document->title ?>"<?php if($content->option->content_title == $document->title):?> selected<?php endif?>><?php echo $document->title?></option>
    			<?php endforeach?>
    		</select>
    	</div>
    </div>

    고맙습니다.

  • 위 코드로 적용하니 저장이 되네요

    그런데.. 본문에는 나타나지 않습니다.

    document.php 파일에서 수정을 해야 하는 것 같은데 ...도움 부탁드리겠습니다.

  • 본문에 나타나게 하는 것.. 해결했네요.

    출력코드를 헛갈렸었네요

     

    감사합니다.

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