function get_sub_fields()

in web/wp-content/plugins/acf-extended/includes/fields/field-advanced-link.php [141:298]


    function get_sub_fields($field){
        
        // get value
        $value = $field['value'];
        
        // storage
        $sub_fields = array();
        
        // type
        $sub_fields[] = array(
            'name'      => 'type',
            'key'       => 'type',
            'label'     => __('Type', 'acf'),
            'type'      => 'radio',
            'required'  => false,
            'class'     => 'input-type',
            'choices'   => array(
                'url'       => __('URL', 'acf'),
                'post'      => __('Post', 'acf'),
                'term'      => __('Term', 'acf'),
            ),
        );
        
        // url
        $sub_fields[] = array(
            'name'              => 'url',
            'key'               => 'url',
            'label'             => __('URL', 'acf'),
            'type'              => 'text',
            'required'          => false,
            'class'             => 'input-url',
            'value'             => isset($value['type']) && $value['type'] === 'url' ? $value['value'] : '', // inject value based on type
            'conditional_logic' => array(
                array(
                    array(
                        'field'     => 'type',
                        'operator'  => '==',
                        'value'     => 'url',
                    )
                )
            )
        );
        
        // post
        $sub_fields[] = array(
            'name'              => 'post',
            'key'               => 'post',
            'label'             => __('Post', 'acf'),
            'type'              => 'select',
            'required'          => false,
            'class'             => 'input-post',
            'allow_null'        => 0,
            'ui'                => 1,
            'ajax'              => 1,
            'ajax_action'       => 'acfe/fields/advanced_link/post_query',
            'choices'           => $this->get_post_choices($field),
            'value'             => isset($value['type']) && $value['type'] === 'post' ? $value['value'] : '', // inject value based on type
            'conditional_logic' => array(
                array(
                    array(
                        'field'     => 'type',
                        'operator'  => '==',
                        'value'     => 'post',
                    )
                )
            )
        );
        
        // term
        $sub_fields[] = array(
            'name'              => 'term',
            'key'               => 'term',
            'label'             => __('Term', 'acf'),
            'type'              => 'acfe_taxonomy_terms',
            'required'          => false,
            'class'             => 'input-term',
            'field_type'        => 'select',
            'return_format'     => 'id',
            'ui'                => 1,
            'allow_null'        => 0,
            'value'             => isset($value['type']) && $value['type'] === 'term' ? $value['value'] : '', // inject value based on type
            'conditional_logic' => array(
                array(
                    array(
                        'field'     => 'type',
                        'operator'  => '==',
                        'value'     => 'term',
                    )
                )
            )
        );
        
        // title
        $sub_fields[] = array(
            'name'      => 'title',
            'key'       => 'title',
            'label'     => __('Link text', 'acf'),
            'type'      => 'text',
            'required'  => false,
            'class'     => 'input-title',
        );
        
        // target
        $sub_fields[] = array(
            'name'      => 'target',
            'key'       => 'target',
            'label'     => __('Target', 'acf'),
            'type'      => 'true_false',
            'message'   => __('Open in a new window', 'acf'),
            'required'  => false,
            'class'     => 'input-target',
        );
        
        // deprecated
        $sub_fields = apply_filters_deprecated('acfe/fields/advanced_link/fields',                         array($sub_fields, $field, $value), '0.8.1', 'acfe/fields/advanced_link/sub_fields');
        $sub_fields = apply_filters_deprecated('acfe/fields/advanced_link/fields/name=' . $field['_name'], array($sub_fields, $field, $value), '0.8.1', 'acfe/fields/advanced_link/sub_fields/name=' . $field['_name']);
        $sub_fields = apply_filters_deprecated('acfe/fields/advanced_link/fields/key=' . $field['key'],    array($sub_fields, $field, $value), '0.8.1', 'acfe/fields/advanced_link/sub_fields/key=' . $field['key']);
        
        // filters
        $sub_fields = apply_filters('acfe/fields/advanced_link/sub_fields',                         $sub_fields, $field, $value);
        $sub_fields = apply_filters('acfe/fields/advanced_link/sub_fields/name=' . $field['_name'], $sub_fields, $field, $value);
        $sub_fields = apply_filters('acfe/fields/advanced_link/sub_fields/key=' . $field['key'],    $sub_fields, $field, $value);
        
        // map subfields
        $sub_fields = acfe_map_fields($sub_fields, function($sub_field){
            
            // handle missing key
            if(!isset($sub_field['key'])){
                $sub_field['key'] = $sub_field['name'];
            }
            
            return $sub_field;
            
        });
        
        foreach($sub_fields as &$sub_field){
            
            // add value
            if(isset($value[ $sub_field['key'] ])){
                
                // this is a normal value
                $sub_field['value'] = $value[ $sub_field['key'] ];
                
            }elseif(isset($sub_field['default_value'])){
                
                // no value, but this subfield has a default value
                $sub_field['value'] = $sub_field['default_value'];
                
            }
            
            // update prefix to allow for nested values
            $sub_field['prefix'] = $field['name'];
            
        }
        
        return $sub_fields;
        
    }