URL로 옵션값 전달

안녕하세요.
추가한 옵션값을 URL로 전달하는 방법이 궁금합니다.
이전에 카테고리값을 URL로 전달하는 방법은 알려주신 function.php 파일에 코드를 적용하여 잘 사용중입니다.
아래 예시와 같이 옵션값을 URL에 넣어 전달하여 게시판 입력폼으로 넘기면 자동으로 선택되게 하고 싶습니다.

- 예시 : domain.com/board/?category1=value1&category2=value2&option1=value3&option2=value4

그럼 답변 부탁드립니다.
감사합니다.
 

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

    KBoard 플러그인 입력 필드를 별도로 추가하고

    특정 URL로 게시글 작성 페이지로 이동하면 입력 필드의 값이 자동으로 선택되게 하고 싶으신 건지요?

    추가하신 필드의 형태가 어떤 건지 알려주시면 도움 드릴 방법을 찾아보겠습니다.

    고맙습니다.

  • 네 맞습니다.
    입력 필드의 형태는 카테고리와 같은 셀렉트 박스입니다.
    감사합니다^^

     

  • 안녕하세요.

    KBoard 입력 필드 중 셀렉트 박스 필드의 설정을

    아래와 같이 설정한 예제 코드를 안내해드리겠습니다.

    https://imgur.com/a/C5EWhNf

     

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

    add_filter('kboard_get_template_field_html', 'kboard_get_template_field_html_2020_04_13', 10, 4);
    function kboard_get_template_field_html_2020_04_13($html, $field, $content, $board){
    	if($field['meta_key'] == 'fruit' && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$fields = $board->fields();
    		$meta_key = isset($field['meta_key'])&&$field['meta_key'] ? esc_attr($field['meta_key']) : '';
    		$required = isset($field['required'])&&$field['required'] ? 'required' : '';
    		$field_name = isset($field['field_name'])&&$field['field_name'] ? esc_attr($field['field_name']) : '';
    		$default_value = isset($field['default_value'])&&$field['default_value'] ? esc_attr($field['default_value']) : '첫번째 줄
두번째 줄';
    		
    		$meta_value = isset($_GET[$field['meta_key']]) ? sanitize_text_field($_GET[$field['meta_key']]) : '';
    		
    		ob_start();
    		?>
    		<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> meta-key-<?php echo esc_attr($meta_key)?> <?php echo esc_attr($required)?>">
    			<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span><?php if($required):?> <span class="attr-required-text">*</span><?php endif?></label>
    			<div class="attr-value">
    				<select id="<?php echo esc_attr($meta_key)?>" name="<?php echo esc_attr($fields->getOptionFieldName($meta_key))?>"class="<?php echo esc_attr($required)?>">
    					<option value=""><?php echo __('Select', 'kboard')?></option>
    					<?php foreach($field['row'] as $option_key=>$option_value):?>
    						<?php if(isset($option_value['label']) && $option_value['label']):?>
    							<?php if($content->option->{$meta_key}):?>
    								<option value="<?php echo esc_attr($option_value['label'])?>"<?php if($fields->isSavedOption($content->option->{$meta_key}, $option_value['label'])):?> selected<?php endif?>><?php echo esc_html($option_value['label'])?></option>
    							<?php elseif($meta_value):?>
    								<option value="<?php echo esc_attr($option_value['label'])?>"<?php if($meta_value==$option_value['label']):?> selected<?php endif?>><?php echo esc_html($option_value['label'])?></option>
    							<?php else:?>
    								<option value="<?php echo esc_attr($option_value['label'])?>"<?php if($default_value && $default_value==$option_key):?> selected<?php endif?>><?php echo esc_html($option_value['label'])?></option>
    							<?php endif?>
    						<?php endif?>
    					<?php endforeach?>
    				</select>
    				<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
    			</div>
    		</div>
    		<?php
    		$html = ob_get_clean();
    	}
    		
    	return $html;
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

     

    아래의 주소로 접속하면 주소의 값으로 셀렉트 박스가 선택됩니다.

    게시판페이지주소/?mod=editor&fruit=사과
    게시판페이지주소/?mod=editor&fruit=바나나

    고맙습니다.

  • if($field['meta_key'] == 'fruit' && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.

    이 부분을 수정해서 적용하니 정상적으로 옵션값이 넘어오네요.
    그럼 여러개의 옵션값을 선택해야 할 경우에는 코드를 어떻게 추가하면 될까요?

    예) 게시판페이지주소/?mod=editor&fruit=사과&color=빨강&count=10개

  • 여러 개의 입력 필드에 적용하시려면

    이전 댓글에 안내해드린 코드 중

    아래의 코드를 찾아서

    $field['meta_key'] == 'fruit'

    아래의 코드처럼 적용해서 확인해보시겠어요?

    in_array($field['meta_key'], array('fruit', 'color', 'count'))

     

    PHP in_array 함수에 대한 자세한 내용은

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

    https://www.php.net/manual/en/function.in-array.php

    고맙습니다.

  • 알려주신 코드로 적용하니 잘 됩니다.
    감사합니다^^

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