wordpress — Multi-select добавить выбранный атрибут, если значение присутствует в основном массиве

Я работаю с множественным выбором и методом GET. Я хочу, чтобы несколько вариантов были выбраны, когда форма перезагружается после отправки на основе метода $ _GET из параметров url. У меня есть связанные параметры URL cuisine%5B%5D=indian&cuisine%5B%5D=thai. На самом деле множественный выбор о cuisine,

И мои коды ниже:

 <select name="cuisine[]" class="selectpicker show-tick form-control" data-selected-text-format="count > 3" data-done-button="true" data-done-button-text="OK" multiple>
<?php
$selected_cuisine = $_GET['cuisine'];
// Get all cuisines list by get_terms() function.Its built in wordpress
$restaurant_cuisines = get_terms('cuisine', array('hide_empty' => false));
$cuisines = array();
foreach ($restaurant_cuisines as $restaurant_cuisine) {
// echo $restaurant_cuisine;
array_push( $cuisines, $restaurant_cuisine->slug );
// echo $cuisines_list;
}
print_r ($selected_cuisine);
print_r($cuisines);
if(array_intersect($selected_cuisine, $cuisines)){
$selected = 'selected';
}else{
$selected = '';
}
foreach ($restaurant_cuisines as $cuisine) {
echo '<option value="'. $cuisine->slug .'" '. $selected .' >'. $cuisine->name .'</option>';
}
?>
</select>

Но проблема в том, что выбираются все варианты. 3 cuisines : indian, thai & chainese а также 2 of them are selected -> indian and thai.Но проблема в том, что выбраны 3 варианта. : /

1

Решение

Помните, когда вы используете array_intersect это значение true, по крайней мере одно совпадение в обоих массивах. Так что все выбирается. Скорее вы можете попробовать это:

<select name="cuisine[]" class="selectpicker show-tick form-control" data-selected-text-format="count > 3" data-done-button="true" data-done-button-text="OK" multiple>
<?php
$selected_cuisine = $_GET['cuisine'];
// Get all cuisines list by get_terms() function.Its built in wordpress
$restaurant_cuisines = get_terms('cuisine', array('hide_empty' => false));
$cuisines = array();
foreach ($restaurant_cuisines as $restaurant_cuisine) {
array_push( $cuisines, $restaurant_cuisine->slug );
}
foreach ($restaurant_cuisines as $cuisine) {
if(in_array($cuisine->slug, $selected_cuisine)){
$selected = 'selected';
}else{
$selected = '';
}
echo '<option value="'. $cuisine->slug .'" '. $selected .' >'. $cuisine->name .'</option>';
}
?>

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector