$post_id ) ); foreach( $groups as $key => $values ) { if ( isset( $values[ 'key' ] ) ) { $group_fields = acf_get_fields( $values[ 'key' ] ); foreach( $group_fields as $field ) { if ( in_array( $field[ 'type' ], [ 'acf_city_selector', 'repeater', 'flexible_content', 'group' ] ) ) { $new_fields[] = $field; } } if ( isset( $new_fields ) ) { $fields = $new_fields; } } } } else { $groups = apply_filters('acf/get_field_groups', [] ); foreach( $groups as $group ) { if ( isset( $group[ 'id' ] ) ) { $group_fields = apply_filters( 'acf/field_group/get_fields', array(), $group[ 'id' ] ); foreach( $group_fields as $field ) { if ( 'acf_city_selector' == $field[ 'type' ] ) { $new_fields[] = $field; } } if ( isset( $new_fields ) ) { $fields = $new_fields; } } } } } } } /* * Get the field settings * * @TODO: check for multiple fields, array_search only returns first instance */ if ( isset( $fields ) && is_array( $fields ) && count( $fields ) > 0 ) { foreach( $fields as $field ) { if ( isset( $field[ 'type' ] ) && $field[ 'type' ] == 'acf_city_selector' ) { $settings[ 'default_country' ] = $field[ 'default_country' ]; $settings[ 'show_labels' ] = $field[ 'show_labels' ]; $settings[ 'use_select2' ] = ( isset( $field[ 'use_select2' ] ) ) ? $field[ 'use_select2' ] : false; $settings[ 'which_fields' ] = $field[ 'which_fields' ]; break; } elseif ( isset( $field[ 'type' ] ) && $field[ 'type' ] == 'repeater' ) { $array_key = array_search( 'acf_city_selector', array_column( $field[ 'sub_fields' ], 'type' ) ); if ( false !== $array_key ) { $settings[ 'default_country' ] = $field[ 'sub_fields' ][ $array_key ][ 'default_country' ]; $settings[ 'show_labels' ] = $field[ 'sub_fields' ][ $array_key ][ 'show_labels' ]; $settings[ 'use_select2' ] = $field[ 'sub_fields' ][ $array_key ][ 'use_select2' ]; $settings[ 'which_fields' ] = $field[ 'sub_fields' ][ $array_key ][ 'which_fields' ]; break; } } elseif ( isset( $field[ 'type' ] ) && $field[ 'type' ] == 'flexible_content' ) { $layouts = $field[ 'layouts' ]; foreach( $layouts as $layout ) { $sub_fields = $layout[ 'sub_fields' ]; $array_key = array_search( 'acf_city_selector', array_column( $sub_fields, 'type' ) ); if ( false !== $array_key ) { $settings[ 'default_country' ] = $sub_fields[ $array_key ][ 'default_country' ]; $settings[ 'show_labels' ] = $sub_fields[ $array_key ][ 'show_labels' ]; $settings[ 'use_select2' ] = $sub_fields[ $array_key ][ 'use_select2' ]; $settings[ 'which_fields' ] = $sub_fields[ $array_key ][ 'which_fields' ]; break; } else { // check for repeater $repeater_key = array_search( 'repeater', array_column( $sub_fields, 'type' ) ); if ( false !== $repeater_key ) { $array_key = array_search( 'acf_city_selector', array_column( $sub_fields[ $repeater_key ][ 'sub_fields' ], 'type' ) ); if ( false !== $array_key ) { $settings[ 'default_country' ] = $sub_fields[ $repeater_key ][ 'sub_fields' ][ $array_key ][ 'default_country' ]; $settings[ 'show_labels' ] = $sub_fields[ $repeater_key ][ 'sub_fields' ][ $array_key ][ 'show_labels' ]; $settings[ 'use_select2' ] = $sub_fields[ $repeater_key ][ 'sub_fields' ][ $array_key ][ 'use_select2' ]; $settings[ 'which_fields' ] = $sub_fields[ $repeater_key ][ 'sub_fields' ][ $array_key ][ 'which_fields' ]; break; } } else { $group_key = array_search( 'group', array_column( $sub_fields, 'type' ) ); if ( false !== $group_key ) { // @TODO: finish } } } } } elseif ( isset( $field[ 'type' ] ) && $field[ 'type' ] == 'group' ) { $array_key = array_search( 'acf_city_selector', array_column( $field[ 'sub_fields' ], 'type' ) ); if ( false !== $array_key ) { $settings[ 'default_country' ] = $field[ 'sub_fields' ][ $array_key ][ 'default_country' ]; $settings[ 'show_labels' ] = $field[ 'sub_fields' ][ $array_key ][ 'show_labels' ]; $settings[ 'use_select2' ] = $field[ 'sub_fields' ][ $array_key ][ 'use_select2' ]; $settings[ 'which_fields' ] = $field[ 'sub_fields' ][ $array_key ][ 'which_fields' ]; break; } else { $array_key = array_search( 'acf_city_selector', array_column( $field[ 'sub_fields' ], 'type' ) ); if ( false === $array_key ) { $array_key = array_search( 'repeater', array_column( $field[ 'sub_fields' ], 'type' ) ); if ( false === $array_key ) { $array_key = array_search( 'flexible_content', array_column( $field[ 'sub_fields' ], 'type' ) ); // @TODO: finish } else { if ( ! empty( $field[ 'sub_fields' ][ $array_key ][ 'sub_fields' ] ) ) { $acf_key = array_search( 'acf_city_selector', array_column( $field[ 'sub_fields' ][ $array_key ][ 'sub_fields' ], 'type' ) ); if ( false !== $acf_key ) { $settings[ 'default_country' ] = $field[ 'sub_fields' ][ $array_key ][ 'sub_fields' ][ $acf_key ][ 'default_country' ]; $settings[ 'show_labels' ] = $field[ 'sub_fields' ][ $array_key ][ 'sub_fields' ][ $acf_key ][ 'show_labels' ]; $settings[ 'use_select2' ] = $field[ 'sub_fields' ][ $array_key ][ 'sub_fields' ][ $acf_key ][ 'use_select2' ]; $settings[ 'which_fields' ] = $field[ 'sub_fields' ][ $array_key ][ 'sub_fields' ][ $acf_key ][ 'which_fields' ]; break; } } } } else { $settings[ 'default_country' ] = $field[ 'sub_fields' ][ $array_key ][ 'default_country' ]; $settings[ 'show_labels' ] = $field[ 'sub_fields' ][ $array_key ][ 'show_labels' ]; $settings[ 'use_select2' ] = $field[ 'sub_fields' ][ $array_key ][ 'use_select2' ]; $settings[ 'which_fields' ] = $field[ 'sub_fields' ][ $array_key ][ 'which_fields' ]; break; } } } } } } return $settings; }