Я работаю над фильтром для страницы WordPress, и у меня возникают проблемы при попытке использовать несколько значений.
Идея состоит в том, чтобы использовать логическое значение, чтобы показать или не показать элемент.Каждый элемент использует ACF для получения различных полей, в данном случае это цвет.
if( isset($colores) ){
foreach($colores as $color){
if( in_array ( $color, get_field( 'color', get_the_ID() ) ) ){//Matches the filter
$pasaColor = true;
}else if($color == null){//Not specified in the filter
$pasaColor= true;
}else{//doesn't match the filter
$pasaColor= false;
}
}
}
Это работает, если $colores
имеет только один элемент, например:
(
[0] => yellow
)
Я сравниваю егосо значениями каждого элемента:
(
[0] => yellow
[1] => red
[2] => blue
)
Этот результат приводит к: $pasaColor=true
(
[1] => red
[2] => blue
)
Этот результат приводит к: $pasaColor=false
Но если фильтрдает более одного элемента, только последний остается верным.
Фильтр:
(
[0] => yellow
[1] => azul
)
Item1:
(
[0] => yellow
[1] => red
[2] => pink
)
В результате $pasaColor=false
Item2:
(
[0] => blue
[1] => red
[2] => pink
)
Это приводит к $pasaColor=true
В item1 результат, который я получаю, означает, что значение «yellow» не может быть найдено в массиве, который фактически содержитзначение «желтый».
И пока мы на нем, есть ли более простой способ сделать это?