Isset多选择下拉菜单和自举(Isset with multi select dropdown a

2019-10-28 23:56发布

我有一个WordPress网站与搜索基于表单字段选择职位,自定义字段等它工作正常搜索表单,但是搜索结果页上我有形式的精确副本,不同之处在于我试图预置基于搜索查询/ URL字符串形式的选择。

我使用的是常规的选择下拉菜单,我已经将其设置为“多”,因此,它可以使用多选白手起家用的复选框。 我问过类似的问题, 这里 ,但是这是对复选框和即使引导多选使用复选框,我还是必须先与选择下拉工作。

所以想几件事情之后,我已经接近但都遇到了一些问题。 在下面的代码中,我做了笔记,以进一步解释正是我的意思。

<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>

Answer 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> 



文章来源: Isset with multi select dropdown and bootstrap