function add_field_group($field_group)
 {
     // validate
     $field_group = acf_get_valid_field_group($field_group);
     // don't allow overrides
     if (acf_is_local_field_group($field_group['key'])) {
         return;
     }
     // remove fields
     $fields = acf_extract_var($field_group, 'fields');
     // format fields
     $fields = acf_prepare_fields_for_import($fields);
     // add field group
     $this->groups[$field_group['key']] = $field_group;
     // add fields
     foreach ($fields as $field) {
         // add parent
         if (empty($field['parent'])) {
             $field['parent'] = $field_group['key'];
         }
         // add field group reference
         //$field['field_group'] = $field_group['key'];
         // add field
         $this->add_field($field);
     }
 }
Example #2
0
function acf_update_field_group($field_group = array())
{
    // validate
    $field_group = acf_get_valid_field_group($field_group);
    // may have been posted. Remove slashes
    $field_group = wp_unslash($field_group);
    // locations may contain 'uniquid' array keys
    $field_group['location'] = array_values($field_group['location']);
    foreach ($field_group['location'] as $k => $v) {
        $field_group['location'][$k] = array_values($v);
    }
    // store origional field group for return
    $data = $field_group;
    // extract some args
    $extract = acf_extract_vars($data, array('ID', 'key', 'title', 'menu_order', 'fields'));
    // serialize for DB
    $data = maybe_serialize($data);
    // save
    $save = array('ID' => $extract['ID'], 'post_status' => 'publish', 'post_type' => 'acf-field-group', 'post_title' => $extract['title'], 'post_name' => $extract['key'], 'post_excerpt' => sanitize_title($extract['title']), 'post_content' => $data, 'menu_order' => $extract['menu_order']);
    // allow field groups to contain the same name
    add_filter('wp_unique_post_slug', 'acf_update_field_group_wp_unique_post_slug', 100, 6);
    // update the field group and update the ID
    if ($field_group['ID']) {
        wp_update_post($save);
    } else {
        $field_group['ID'] = wp_insert_post($save);
    }
    // action for 3rd party customization
    do_action('acf/update_field_group', $field_group);
    // clear cache
    wp_cache_delete('field_groups', 'acf');
    // return
    return $field_group;
}