Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
advanced-custom-fields
/
includes
/
fields
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if (!class_exists('acf_field__group')) { class acf_field__group extends acf_field { function initialize() { $this->name = 'group'; $this->label = __('Group', 'acf'); $this->category = 'layout'; $this->defaults = array('sub_fields' => array(), 'layout' => 'block'); $this->have_rows = 'single'; $this->add_field_filter('acf/prepare_field_for_export', array($this, 'prepare_field_for_export')); $this->add_field_filter('acf/prepare_field_for_import', array($this, 'prepare_field_for_import')); } function load_field($field) { $sub_fields = acf_get_fields($field); if ($sub_fields) { $field['sub_fields'] = $sub_fields; } return $field; } function load_value($value, $post_id, $field) { if (empty($field['sub_fields'])) { return $value; } $field = $this->prepare_field_for_db($field); $value = array(); foreach ($field['sub_fields'] as $sub_field) { $value[$sub_field['key']] = acf_get_value($post_id, $sub_field); } return $value; } function format_value($value, $post_id, $field) { if (empty($value)) { return false; } $field = $this->prepare_field_for_db($field); foreach ($field['sub_fields'] as $sub_field) { $sub_value = acf_extract_var($value, $sub_field['key']); $sub_value = acf_format_value($sub_value, $post_id, $sub_field); $value[$sub_field['_name']] = $sub_value; } return $value; } function update_value($value, $post_id, $field) { if (!acf_is_array($value)) { return null; } if (empty($field['sub_fields'])) { return null; } $field = $this->prepare_field_for_db($field); foreach ($field['sub_fields'] as $sub_field) { $v = false; if (isset($value[$sub_field['key']])) { $v = $value[$sub_field['key']]; } elseif (isset($value[$sub_field['_name']])) { $v = $value[$sub_field['_name']]; } else { continue; } acf_update_value($v, $post_id, $sub_field); } return ''; } function prepare_field_for_db($field) { if (empty($field['sub_fields'])) { return $field; } foreach ($field['sub_fields'] as &$sub_field) { $sub_field['name'] = $field['name'] . '_' . $sub_field['_name']; } return $field; } function render_field($field) { if (empty($field['sub_fields'])) { return; } foreach ($field['sub_fields'] as &$sub_field) { if (isset($field['value'][$sub_field['key']])) { $sub_field['value'] = $field['value'][$sub_field['key']]; } elseif (isset($sub_field['default_value'])) { $sub_field['value'] = $sub_field['default_value']; } $sub_field['prefix'] = $field['name']; if ($field['required']) { $sub_field['required'] = 0; } } if ($field['layout'] == 'table') { $this->render_field_table($field); } else { $this->render_field_block($field); } } function render_field_block($field) { $label_placement = $field['layout'] == 'block' ? 'top' : 'left'; echo '<div class="acf-fields -' . $label_placement . ' -border">'; foreach ($field['sub_fields'] as $sub_field) { acf_render_field_wrap($sub_field); } echo '</div>'; } function render_field_table($field) { ?> <table class="acf-table"> <thead> <tr> <?php foreach ($field['sub_fields'] as $sub_field) { $sub_field = acf_prepare_field($sub_field); if (!$sub_field) { continue; } $atts = array(); $atts['class'] = 'acf-th'; $atts['data-name'] = $sub_field['_name']; $atts['data-type'] = $sub_field['type']; $atts['data-key'] = $sub_field['key']; if ($sub_field['wrapper']['width']) { $atts['data-width'] = $sub_field['wrapper']['width']; $atts['style'] = 'width: ' . $sub_field['wrapper']['width'] . '%;'; } ?> <th <?php acf_esc_attr_e($atts); ?>> <?php acf_render_field_label($sub_field); ?> <?php acf_render_field_instructions($sub_field); ?> </th> <?php } ?> </tr> </thead> <tbody> <tr class="acf-row"> <?php foreach ($field['sub_fields'] as $sub_field) { acf_render_field_wrap($sub_field, 'td'); } ?> </tr> </tbody> </table> <?php } function render_field_settings($field) { $args = array('fields' => $field['sub_fields'], 'parent' => $field['ID']); ?> <tr class="acf-field acf-field-setting-sub_fields" data-setting="group" data-name="sub_fields"> <td class="acf-label"> <label><?php _e('Sub Fields', 'acf'); ?></label> </td> <td class="acf-input"> <?php acf_get_view('field-group-fields', $args); ?> </td> </tr> <?php acf_render_field_setting($field, array('label' => __('Layout', 'acf'), 'instructions' => __('Specify the style used to render the selected fields', 'acf'), 'type' => 'radio', 'name' => 'layout', 'layout' => 'horizontal', 'choices' => array('block' => __('Block', 'acf'), 'table' => __('Table', 'acf'), 'row' => __('Row', 'acf')))); } function validate_value($valid, $value, $field, $input) { if (empty($value)) { return $valid; } if (empty($field['sub_fields'])) { return $valid; } foreach ($field['sub_fields'] as $sub_field) { $k = $sub_field['key']; if (!isset($value[$k])) { continue; } if ($field['required']) { $sub_field['required'] = 1; } acf_validate_value($value[$k], $sub_field, "{$input}[{$k}]"); } return $valid; } function duplicate_field($field) { $sub_fields = acf_extract_var($field, 'sub_fields'); $field = acf_update_field($field); acf_duplicate_fields($sub_fields, $field['ID']); return $field; } function prepare_field_for_export($field) { if (!empty($field['sub_fields'])) { $field['sub_fields'] = acf_prepare_fields_for_export($field['sub_fields']); } return $field; } function prepare_field_for_import($field) { if (!empty($field['sub_fields'])) { $sub_fields = acf_extract_var($field, 'sub_fields'); foreach ($sub_fields as $i => $sub_field) { $sub_fields[$i]['parent'] = $field['key']; $sub_fields[$i]['menu_order'] = $i; } return array_merge(array($field), $sub_fields); } return $field; } function delete_value($post_id, $meta_key, $field) { if (empty($field['sub_fields'])) { return null; } $field = $this->prepare_field_for_db($field); foreach ($field['sub_fields'] as $sub_field) { acf_delete_value($post_id, $sub_field); } } function delete_field($field) { if ($field['sub_fields']) { foreach ($field['sub_fields'] as $sub_field) { acf_delete_field($sub_field['ID']); } } } } acf_register_field_type('acf_field__group'); }