2017-12-28 44 views
0

양식 필드 선택, 사용자 정의 필드 등을 기준으로 게시물을 검색하는 검색 양식이 포함 된 WordPress 사이트가 있습니다. 검색 결과 페이지에는 정확한 사본이 있지만 잘 작동합니다. 양식의 검색 쿼리/URL 문자열을 기반으로 양식 선택을 미리 설정하려고합니다.다중 선택 드롭 다운 및 부트 스트랩으로 설정

정기적 인 선택 드롭 다운을 사용하고 있고 확인란이있는 다중 선택 스위치를 사용할 수 있도록 "다중"으로 설정했습니다. 나는 비슷한 질문을했다. HERE하지만 그게 체크 박스를위한 것이었다. 그리고 멀티 쓰레드가 체크 박스를 사용하더라도, 나는 여전히 선택 드롭 다운으로 작업해야한다.

그래서 몇 가지 시도를 한 후에는 가까이에 있지만 몇 가지 문제가 발생했습니다. 아래의 코드에서 필자는 필자가 의미하는 바를 자세히 설명하기 위해 노트를 작성했습니다.

<select name="property_type[]" id="pt-multi" class="form-control multi-select2" multiple="multiple"> 
<?php 
$terms = get_terms("property-type", array('hide_empty' => 0)); 
$count = count($terms); 

if ($count > 0 ){ 
     echo "<option value='Any'>All</option>"; 

     foreach ($terms as $term) { 

if (isset($_GET['property_type'])) { 
     foreach ($_GET['property_type'] as $proptypes) { 

// FIRST EXAMPLE 
$selected .= ($proptypes === $term->slug) ? "selected" : ""; // shows first correct selected value but also selects everything after it up until the second correct value, which it doesn't select. 
//$selected = ($proptypes === $term->slug) ? "selected" : ""; // shows only last correct selected value 
//if ($proptypes === $term->slug) { $selected = 'selected'; } // shows first correct selected value then selects every value after, even if it wasn't selected 

// SECOND EXAMPLE 
//$selected .= ($proptypes === $term->slug) ? "selected" : ""; // shows first correct selected value then selects every value after, even if it wasn't selected 
//$selected = ($proptypes === $term->slug) ? "selected" : ""; // shows only last correct selected value 
//if ($proptypes === $term->slug) { $selected = 'selected'; } // shows first correct selected value then selects every value after, even if it wasn't selected 


    } 
} 
     echo "<option value='" . $term->slug . "' " . $selected . ">" . $term->name . "</option>";     // FIRST EXAMPLE 

     //echo "<option value='" . $term->slug . "' " . ($selected?' selected':'') . ">" . $term->name . "</option>"; // SECOND EXMAPLE 

    } 
} 
?> 
</select> 

답변

1

in_array()를 만들고 배열하여 사용하여 확인하십시오.

<select name="property_type[]" id="pt-multi" class="form-control multi-select2" multiple="multiple"> 
 
<?php 
 
$terms = get_terms("property-type", array('hide_empty' => 0)); 
 
$count = count($terms); 
 

 
// Setup an array of $proptypes 
 
$proptypes = array(); 
 
if (isset($_GET['property_type'])) { 
 
    foreach ($_GET['property_type'] as $proptype) { 
 
     $proptypes[] = $proptype; 
 
    } 
 
} 
 

 
if ($count > 0) { 
 
    echo "<option value='Any'>All</option>"; 
 
    foreach ($terms as $term) { 
 
     $selected = (in_array($term->slug, $proptypes)) ? 'selected' : ''; 
 
     echo "<option value='" . $term->slug . "' " . $selected . ">" . $term->name . "</option>"; 
 
    } 
 
} 
 

 
?> 
 
</select>