acf_convert_rules_to_groups()
acf_convert_rules_to_groups
Converts an array of rules from ACF4 to an array of groups for ACF5
No Hooks.
Returns
Array.
Usage
acf_convert_rules_to_groups( $rules, $anyorall );
- $rules(array) (required)
- An array of rules.
- $anyorall(string)
- The anyorall setting used in ACF4.
Default:'any'
Changelog
| Since 5.7.4 | Introduced. |
acf_convert_rules_to_groups() acf convert rules to groups code ACF 6.8.8
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;
}