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;
}