acf_convert_rules_to_groups()ACF 5.7.4

acf_convert_rules_to_groups

Converts an array of rules from ACF4 to an array of groups for ACF5

Хуков нет.

Возвращает

Массив.

Использование

acf_convert_rules_to_groups( $rules, $anyorall );
$rules(массив) (обязательный)
An array of rules.
$anyorall(строка)
The anyorall setting used in ACF4.
По умолчанию: 'any'

Список изменений

С версии 5.7.4 Введена.

Код acf_convert_rules_to_groups() ACF 5.10.2

function acf_convert_rules_to_groups( $rules, $anyorall = 'any' ) {

	// vars
	$groups = array();
	$index  = 0;

	// loop
	foreach ( $rules as $rule ) {

		// extract vars
		$group = acf_extract_var( $rule, 'group_no' );
		$order = acf_extract_var( $rule, 'order_no' );

		// calculate group if not defined
		if ( $group === null ) {
			$group = $index;

			// use $anyorall to determine if a new group is needed
			if ( $anyorall == 'any' ) {
				$index++;
			}
		}

		// calculate order if not defined
		if ( $order === null ) {
			$order = isset( $groups[ $group ] ) ? count( $groups[ $group ] ) : 0;
		}

		// append to group
		$groups[ $group ][ $order ] = $rule;

		// sort groups
		ksort( $groups[ $group ] );
	}

	// sort groups
	ksort( $groups );

	// return
	return $groups;
}