radio 버튼으로 넘긴 값을 document에서 어떻게 받아야 하나요?

안녕하세요~ 궁금한 것 물어보겠습니다. editor에서 

<div class="kboard-attr-row">
				<label class="attr-name" for="kboard_option_sex"><span class="field-name">성별</span> <span class="attr-required-text">*</span></label>
				<div class="attr-value">
					<div class="sex-checks">
						<input id="sex_type1" type="radio" value="W" name="sex_type" class="form-check-input" checked onclick="" value = "<?php echo $content->option->sex ?>">
						<label for="sex_type1" style="vertical-align:middle;">여자</label>
					</div>
						
					<div class="sex-checks">
						<input id="sex_type2" type="radio" value="M" name="sex_type" class="form-check-input" onclick="" value = "<?php echo $content->option->sex ?>">
						<label for="sex_type2" style="vertical-align:middle;" >남자</label>
					</div>
				</div>
				<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
			</div>

 이렇게 넣고 작성완료를 했을 때 글을 확인해보면 값을 못받아오거든요. document에서

<div class="kboard-content" itemprop="description">
	<div class="content-view"> 
		<p>성별: <?php echo $content->option->sex ?></p> 
	</div>
</div>

이렇게 받았습니다. 문제가 뭔지 모르겠어서 도움이 필요합니다.

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

    editor.php 파일과 document.php 파일 모두 잘못 수정하신 듯합니다.

    editor.php 파일은 아래의 코드로 교체해보세요.

    <div class="kboard-attr-row">
    	<label class="attr-name" for="kboard_option_sex"><span class="field-name">성별</span> <span class="attr-required-text">*</span></label>
    	<div class="attr-value">
    		<div class="sex-checks">
    			<input id="sex_type1" type="radio" value="W" name="kboard_option_sex_type" class="form-check-input"<?php if(!$content->option->sex_type || $content->option->sex_type == 'W'):?> checked<?php endif?>>
    			<label for="sex_type1" style="vertical-align:middle;">여자</label>
    		</div>
    			
    		<div class="sex-checks">
    			<input id="sex_type2" type="radio" value="M" name="kboard_option_sex_type" class="form-check-input"<?php if($content->option->sex_type == 'M'):?> checked<?php endif?>>
    			<label for="sex_type2" style="vertical-align:middle;" >남자</label>
    		</div>
    	</div>
    </div>

     

    document.php 파일은 아래의 코드로 교체해보세요.

    <div class="kboard-content" itemprop="description">
    	<div class="content-view"> 
    		<p>성별: <?php echo $content->option->sex_type?></p> 
    	</div>
    </div>

     

    라디오 태그에는 value가 1개만 있어야 합니다.

    올려주신 태그에는 value가 2개씩 추가되어 있습니다.

    또한 editor.php 파일에서 name을 kboard_option_메타키 이런 식으로 적용해주셔야

    document.php 파일에서 <?php echo $content->option->메타키?> 이런 식으로 사용하실 수 있습니다.

    고맙습니다.

  • 아 상세한 설명 감사합니다. 받아와지네요. 궁금한 거 하나만 더 물어보겠습니다. 라디오 태그에는 value가 하나만 있어야 한다는 말이 radio 태그 안에 value="" 으로 또 한번 더넣어서 2개씩 추가되어있다는 말씀이신거죠? select 되어있는 값도 못받아오는데 이건 왜그런건가요? 

    <div class="kboard-attr-row">
    				<label class="attr-name" for="kboard_option_age"><span class="field-name">나이</span> <span class="attr-required-text">*</span></label>
    				<div class="attr-value">
    					<select class="age_form" name="kboard_option_age" id="kboard_option_age" required="required">
    						<option value="0" <?php if($content->option->age == '0'):?> selected<?php endif?>>19세~24세</option>
    						<option value="1" <?php if($content->option->age == '1'):?> selected<?php endif?>>25세~29세</option>
    						<option value="2" <?php if($content->option->age == '2'):?> selected<?php endif?>>30세~34세</option>
    						<option value="3" <?php if($content->option->age == '3'):?> selected<?php endif?>>35세~39세</option>
    					</select>
    				</div>
    			</div>

    document에서는 똑같이 

    <div class="kboard-content" itemprop="description">
    				<div class="content-view"> 
    					<p>나이: <?php echo $content->option->age ?></p> 
    				</div>
    			</div>

    이렇게 받았습니다.

  • 라디오 태그에는 value가 2개 들어있는 문제와

    name이 kboard_option_sex_type 이런 식으로 적용돼야 하는데

    sex_type 이런 식으로 적용되어 있어 정상적으로 게시글 입력 필드가 저장되지 않고 있었습니다.

     

    올려주신 셀렉트 박스는 에러나 버그는 없습니다.

    다만, 19세~24세를 선택하면 $content->option->age 값에는 0이 들어가기 때문에

    게시글 본문 페이지에서 $content->option->age 값을 출력하면 0이 표시됩니다.

    if문을 추가하여 $content->option->age이 0이면 19세~24세를 표시하고

    다른 부분도 동일한 방법으로 적용해주셔야 할 듯합니다.

     

    더 간단한 방법으로는,

    editor.php 파일에서 아래와 같이 적용하시면

    <option value="19세~24세" <?php if($content->option->age == '19세~24세'):?> selected<?php endif?>>19세~24세</option>

     

    document.php 파일에서는 기존 코드처럼 출력만 하시면 됩니다.

    고맙습니다.

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