ACF conditional logic: пример с OR и AND
Допустим нам нужно создать 2 ACF поля, первое это текстовое, а второе это селект c выбором цветов: red,blue,yellow. Сделаем мы это через код (программно).
Логика наших полей будет такова: мы показываем текстовое поле только если во втором поле выбрано значение red или blue. Если выбрано yellow то текстовое поле не показываем. В Advanced Custom Field это называется conditional logic.
Условие OR
Обратите внимание на массив с ключом conditional_logic. Если мы используем условие OR то добавляем массив с сравнением в двойном массиве.
'key' => 'group_key',
'title' => 'test',
'fields' => array(
array(
'key' => 'field_test',
'label' => 'test',
'name' => 'test',
'type' => 'text',
'instructions' => '',
'required' => 0,
'conditional_logic' => array(
array(
array(
'field' => 'field_select',
'operator' => '==',
'value' => 'red',
),
),
array(
array(
'field' => 'field_select',
'operator' => '==',
'value' => 'blue',
),
),
),
'wrapper' => array(
'width' => '',
'class' => '',
'id' => '',
),
'default_value' => '',
'placeholder' => '',
'prepend' => '',
'append' => '',
'maxlength' => '',
),
Условие AND
Для условия AND, это когда нужно показывать поле если выбрано 2 значения red и blue, в случаем если бы это был бы multi select, мы бы записали тоже самое соседними массивами. Пример ниже:
'conditional_logic' => array(
array(
array(
'field' => 'field_select',
'operator' => '==',
'value' => 'red',
),
array(
'field' => 'field_select',
'operator' => '==',
'value' => 'blue',
),
),
),