главная/ACF conditional logic: пример с OR и AND
acf conditional logic and or

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',
	     ),
	),
),