/** * Build an array describing existing field groups within the domain. * * @return array * @since 2.0 */ private function build_group_data() { $factory = Types_Field_Utils::get_group_factory_by_domain($this->get_current_domain()); $groups = $factory->query_groups(); $group_data = array(); foreach ($groups as $group) { $group_data[$group->get_slug()] = array('slug' => $group->get_slug(), 'displayName' => $group->get_display_name()); } return $group_data; }
/** * @param string $domain Valid field domain * @param array $group Field group import data as associative array. * @param string $conflict_resolution = 'overwrite'|'create_new' Defines how to handle a situation when a * field group already exists in the database. * * @return array Import results: * 'is_success' bool * 'display_message' string * 'new_group_id' int * * @since 2.1 */ public function import_field_group($domain, $group, $conflict_resolution) { $group_slug = wpcf_getarr($group, Types_Field_Group::XML_SLUG); $group_factory = Types_Field_Utils::get_group_factory_by_domain($domain); $existing_groups = $group_factory->query_groups(array('name' => $group_slug)); $group_already_exists = count($existing_groups) > 0; $new_post = array('post_status' => $group['post_status'], 'post_type' => $group_factory->get_post_type(), 'post_title' => $group['post_title'], 'post_content' => !empty($group['post_content']) ? $group['post_content'] : ''); $update_existing = $group_already_exists && 'overwrite' == $conflict_resolution; if ($update_existing) { $existing_group = $existing_groups[0]; $new_post['ID'] = $existing_group->get_id(); $new_group_id = wp_update_post($new_post); } else { $new_group_id = wp_insert_post($new_post, true); } $is_success = !is_wp_error($new_group_id) && 0 < $new_group_id; // Update group's postmeta if ($is_success && !empty($group['meta'])) { foreach ($group['meta'] as $meta_key => $meta_value) { if (Types_Field_Group_Term::POSTMETA_ASSOCIATED_TAXONOMY == $meta_key) { $meta_values = explode(',', $meta_value); delete_post_meta($new_group_id, $meta_key); foreach ($meta_values as $single_meta_value) { update_post_meta($new_group_id, $meta_key, $single_meta_value); } } else { update_post_meta($new_group_id, $meta_key, $meta_value); } } } // Create display message if ($is_success) { if ($update_existing) { $display_message = sprintf(__('Term field group "%s" updated', 'wpcf'), $group['post_title']); } else { $display_message = sprintf(__('Term field group "%s" added', 'wpcf'), $group['post_title']); } } else { if ($update_existing) { $display_message = sprintf(__('Term field group "%s" update failed', 'wpcf'), $group['post_title']); } else { $display_message = sprintf(__('Term field group "%s" insert failed', 'wpcf'), $group['post_title']); } } return array('is_success' => $is_success, 'display_message' => $display_message, 'new_group_id' => $new_group_id); }