다른 게시판의 값을 가져와서 활용

안녕하세요.

1번게시판에 제목과 마감시간 입력필드(yyyyMMddhhiiss / id="due_date")가 존재하고, 이 두개를 2번 게시판에서 자동 설정되는 값으로 활용하고자 합니다.

케이보드 스레드에서 아래와 같은 코드를 2번 게시판 입력필드에 작성하니 셀렉트박스 형태로 1번 게시판의 제목을 가져올 수 있었습니다.

<!-- 2번 게시판에 설정 -->
<?php
global $wpdb;
$board_id = '1'; // 게시판 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 kboard-attr-select meta-key-select_application required">
	<label class="attr-name" for="kboard_option_select_application"><span class="field-name">지원분야</span></label>
	<div class="attr-value">
		<select id="kboard_option_select_application" name="kboard_option_select_application" 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->kboard_select_application == $document->title):?> selected<?php endif?>><?php echo $document->title?></option> 
			<?php endforeach?>
		</select>
	</div>
</div>

 

궁금한 점은,

위 셀렉트 박스에서 한개를 선택한 경우

1번 게시판에서 하나의 게시글이 선택될텐데, 이때 그 게시글의 제목 값과, 입력필드 값(시간 형식)을 가져올 수 있나요?

//2번 게시판에 추가로 할 설정

//1번 게시판의 제목을 가져온 뒤 작성자의 id를 추가하여 출력
<?php elseif($field['field_type'] == 'title'):?>
	<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> required">
		<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span> <span class="attr-required-text">*</span></label>
		<div class="attr-value">
			<input type="text" id="<?php echo esc_attr($meta_key)?>" name="title" class="required" value="<?php echo $document->title.'_'.$userdata->data->display_name?>"<?php endif?>>
			<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
		</div>
	</div>

//2번 게시판의 select_application 선택한 값이 1번 게시판 게시글의 어떤 제목과 같다면 
//그 글의 입력필드 값을 set_due_date로 가져오기
<?php elseif($content->option->kboard_select_application):?>
<?php foreach ($results as $item2):?>
	<?php
	$document2 = new KBContent();
	$document2->initWithUID()
	?>
	<?php if($content->option->kboard_select_application == $document2->title):?>
		<input type="text" id="set_due_date" name="set_due_date" value="<?php echo $document2->option->due_date?>" readonly="readonly"/>
	<?php endif?>
<?php endforeach ?>
<?php endif?>

 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 코드를 잘못 수정하신 듯합니다.

    올려주신 코드 중 아래의 코드를 찾아서

    <?php echo if($document->title == $content->option->kboard_select_application)?$document->option->due_date:?>

    아래의 코드로 교체해보시겠어요?

    <?php if($document->title == $content->option->kboard_select_application): echo $document->option->due_date; endif?>

     

    워드프레스 사이트에서 디버그 모드를 활성화하면

    에러 메시지를 확인해보실 수 있습니다.

    디버그 모드 활성화 방법은 아래 링크를 참고해보세요.

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

    고맙습니다.

  • 안녕하세요~^^

    어떻게 하고 싶으신 건지 정확히 이해는 가지 않지만

    셀렉트 박스 선택되게 하는 건 아래의 코드로 하고 있는 듯합니다.

    <?php if($content->option->kboard_select_application == $document->title):?> selected<?php endif?>

     

    $document->initWithUID($item->uid); 코드 아래에

    위의 조건을 활용해서 특정 변수에 게시글 정보를 담아서 활용을 해보시겠어요?

    고맙습니다.

  • 답변 감사합니다.

    제 설명이 충분하지 않은 것 같아 조금 더 구체적으로 말씀드립니다.

     

    현재 1, 2번 2개의 게시판이 있고

    2번게시판 글 작성 화면에 1번 게시판 게시글의 옵션 값을 select, text 2가지 형태로 가져오고자 합니다.

     

    1) 1번게시판:title  을  2번게시판:select_application 으로 가져와 select 박스로 보여준 후,

    2) 위의 select 박스에서 선택된 1번게시판의 게시글이 가지고 있는  1번게시판:due_date  옵션값을  2번게시판:set_due_date 의 값으로 설정하려고 합니다.

    <!-- 지원 부문 설정 -->
    <?php
    global $wpdb;
    $board_id = '1'; // 게시판 id
    $where[] = "`board_id`='{$board_id}'";
    $where = implode(' AND ', $where);
    $results = $wpdb->get_results("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE {$where}");
    ?>
    
    <!-- select 버튼으로 1번 게시판 게시글의 title 불러오기 -->
    <div class="kboard-attr-row kboard-attr-select meta-key-select_application required">
    	<label class="attr-name" for="kboard_option_select_application"><span class="field-name">지원분야</span></label>
    	<div class="attr-value">
    		<select id="kboard_option_select_application" name="kboard_option_select_application" 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->kboard_select_application == $document->title):?> selected<?php endif?>><?php echo $document->title?></option> 
    			<?php endforeach?>
    		</select>
    	</div>
    </div>
    
    <!-- input text 으로 동일한 해당 게시글의 due_date 값 불러오기 -->
    <div class="kboard-attr-row kboard-attr-text meta-key-set_due_date required">
    		<label class="attr-name" for="set_due_date"><span class="field-name">마감일시</span></label>
    		<div class="attr-value">
    			<input type="text" id="set_due_date" class="required" name="set_due_date" value="<?php echo if($document->title == $content->option->kboard_select_application)?$document->option->due_date:?>">
    		</div>
    </div>

     

    2번 게시판의 editor-fields.php 파일에 위와같이 작성을 하였는데

    오류가 발생한 것 같습니다.

    작성 화면이 흰 화면으로만 나오고 있습니다.

    어느부분을 수정하면 좋은지 조언 부탁드립니다.

  • 정말 감사합니다. 알려주신대로 코드를 교체하니 글쓰기 페이지가 잘 작동합니다!!

    1번 게시판에 있는 게시글의 제목들이 셀렉트 박스에 정상적으로 보여지고 하나를 선택하면 저장도 됩니다.

     

    그런데 셀렉트 박스에서 선택한 게시글의 uid 가 가지고 있는 due_date에는 실제로 값이 있는데

    추가한 text 입력필드($document->option->due_date)에는 저장되어 나오지 않습니다..

    https://imgur.com/a/pe0vqgd

    가져올 수 있는 방법이 있을까요..? 

  • $document 변수에 1번 게시판의 게시글 정보가 들어있다면

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

    <!-- input text 으로 동일한 해당 게시글의 due_date 값 불러오기 -->
    <div class="kboard-attr-row kboard-attr-text meta-key-set_due_date required">
    	<label class="attr-name" for="set_due_date"><span class="field-name">마감일시</span></label>
    	<div class="attr-value">
    		<input type="text" id="kboard_option_set_due_date" class="required" name="kboard_option_set_due_date" value="<?php echo $content->option->set_due_date ? $content->option->set_due_date : $document->option->due_date?>">
    	</div>
    </div>

    위와 같이 적용하시면 최초 작성 시 1번 게시판의 정보가 표시되며

    1번 게시판의 정보를 수정해서 작성하고 수정 시에는 수정한 값이 표시됩니다.

    고맙습니다.

  • 값이 잘 나오네요, 감사합니다!!

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