Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
advanced-custom-fields
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php acf_register_store('field-groups')->prop('multisite', true); function acf_get_field_group($id = 0) { if (is_object($id)) { $id = $id->ID; } $store = acf_get_store('field-groups'); if ($store->has($id)) { return $store->get($id); } if (acf_is_local_field_group($id)) { $field_group = acf_get_local_field_group($id); } else { $field_group = acf_get_raw_field_group($id); } if (!$field_group) { return false; } $field_group = acf_validate_field_group($field_group); $field_group = apply_filters('acf/load_field_group', $field_group); $store->set($field_group['key'], $field_group); $store->alias($field_group['key'], $field_group['ID']); return $field_group; } function acf_get_raw_field_group($id = 0) { $post = acf_get_field_group_post($id); if (!$post) { return false; } if ($post->post_type !== 'acf-field-group') { return false; } $field_group = (array) maybe_unserialize($post->post_content); $field_group['ID'] = $post->ID; $field_group['title'] = $post->post_title; $field_group['key'] = $post->post_name; $field_group['menu_order'] = $post->menu_order; $field_group['active'] = in_array($post->post_status, array('publish', 'auto-draft')); return $field_group; } function acf_get_field_group_post($id = 0) { if (is_numeric($id)) { return get_post($id); } elseif (is_string($id)) { $cache_key = acf_cache_key("acf_get_field_group_post:key:{$id}"); $post_id = wp_cache_get($cache_key, 'acf'); if ($post_id === false) { $posts = get_posts(array('posts_per_page' => 1, 'post_type' => 'acf-field-group', 'post_status' => array('publish', 'acf-disabled', 'trash'), 'orderby' => 'menu_order title', 'order' => 'ASC', 'suppress_filters' => false, 'cache_results' => true, 'update_post_meta_cache' => false, 'update_post_term_cache' => false, 'acf_group_key' => $id)); $post_id = $posts ? $posts[0]->ID : 0; wp_cache_set($cache_key, $post_id, 'acf'); } if ($post_id) { return get_post($post_id); } } return false; } function acf_is_field_group_key($id = '') { if (is_string($id) && substr($id, 0, 6) === 'group_') { return true; } return apply_filters('acf/is_field_group_key', false, $id); } function acf_validate_field_group($field_group = array()) { if (is_array($field_group) && !empty($field_group['_valid'])) { return $field_group; } $field_group = wp_parse_args($field_group, array('ID' => 0, 'key' => '', 'title' => '', 'fields' => array(), 'location' => array(), 'menu_order' => 0, 'position' => 'normal', 'style' => 'default', 'label_placement' => 'top', 'instruction_placement' => 'label', 'hide_on_screen' => array(), 'active' => true, 'description' => '')); $field_group['ID'] = (int) $field_group['ID']; $field_group['menu_order'] = (int) $field_group['menu_order']; $field_group['active'] = (bool) $field_group['active']; $field_group['_valid'] = true; $field_group = apply_filters('acf/validate_field_group', $field_group); return $field_group; } function acf_get_valid_field_group($field_group = false) { return acf_validate_field_group($field_group); } function acf_translate_field_group($field_group = array()) { $l10n = acf_get_setting('l10n'); $l10n_textdomain = acf_get_setting('l10n_textdomain'); if ($l10n && $l10n_textdomain) { $field_group['title'] = acf_translate($field_group['title']); $field_group = apply_filters('acf/translate_field_group', $field_group); } return $field_group; } add_action('acf/validate_field_group', 'acf_translate_field_group'); function acf_get_field_groups($filter = array()) { $field_groups = array(); $raw_field_groups = acf_get_raw_field_groups(); if ($raw_field_groups) { foreach ($raw_field_groups as $raw_field_group) { $field_groups[] = acf_get_field_group($raw_field_group['ID']); } } $field_groups = apply_filters('acf/load_field_groups', $field_groups); if ($filter) { return acf_filter_field_groups($field_groups, $filter); } return $field_groups; } function acf_get_raw_field_groups() { $cache_key = acf_cache_key('acf_get_field_group_posts'); $post_ids = wp_cache_get($cache_key, 'acf'); if ($post_ids === false) { $posts = get_posts(array('posts_per_page' => -1, 'post_type' => 'acf-field-group', 'orderby' => 'menu_order title', 'order' => 'ASC', 'suppress_filters' => false, 'cache_results' => true, 'update_post_meta_cache' => false, 'update_post_term_cache' => false, 'post_status' => array('publish', 'acf-disabled'))); $post_ids = array(); foreach ($posts as $post) { $post_ids[] = $post->ID; } wp_cache_set($cache_key, $post_ids, 'acf'); } $field_groups = array(); foreach ($post_ids as $post_id) { $field_groups[] = acf_get_raw_field_group($post_id); } return $field_groups; } function acf_filter_field_groups($field_groups, $args = array()) { $filtered = array(); if ($field_groups) { foreach ($field_groups as $field_group) { if (acf_get_field_group_visibility($field_group, $args)) { $filtered[] = $field_group; } } } return $filtered; } function acf_get_field_group_visibility($field_group, $args = array()) { if (!$field_group['active']) { return false; } if ($field_group['location']) { $screen = acf_get_location_screen($args); foreach ($field_group['location'] as $group) { if (empty($group)) { continue; } $match_group = true; foreach ($group as $rule) { if (!acf_match_location_rule($rule, $screen, $field_group)) { $match_group = false; break; } } if ($match_group) { return true; } } } return false; } function acf_update_field_group($field_group) { $field_group = acf_get_valid_field_group($field_group); $field_group = wp_unslash($field_group); $field_group = acf_parse_types($field_group); if ($field_group['location']) { $field_group['location'] = array_filter($field_group['location']); $field_group['location'] = array_values($field_group['location']); $field_group['location'] = array_map('array_filter', $field_group['location']); $field_group['location'] = array_map('array_values', $field_group['location']); } $_field_group = $field_group; acf_extract_vars($_field_group, array('ID', 'key', 'title', 'menu_order', 'fields', 'active', '_valid')); $save = array('ID' => $field_group['ID'], 'post_status' => $field_group['active'] ? 'publish' : 'acf-disabled', 'post_type' => 'acf-field-group', 'post_title' => $field_group['title'], 'post_name' => $field_group['key'], 'post_excerpt' => sanitize_title($field_group['title']), 'post_content' => maybe_serialize($_field_group), 'menu_order' => $field_group['menu_order'], 'comment_status' => 'closed', 'ping_status' => 'closed'); remove_filter('content_save_pre', 'wp_targeted_link_rel'); $save = wp_slash($save); if ($field_group['ID']) { wp_update_post($save); } else { $field_group['ID'] = wp_insert_post($save); } acf_flush_field_group_cache($field_group); do_action('acf/update_field_group', $field_group); return $field_group; } function _acf_apply_unique_field_group_slug($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) { if ($post_type === 'acf-field-group') { return $original_slug; } return $slug; } add_filter('wp_unique_post_slug', '_acf_apply_unique_field_group_slug', 999, 6); function acf_flush_field_group_cache($field_group) { acf_get_store('field-groups')->remove($field_group['key']); wp_cache_delete(acf_cache_key("acf_get_field_group_post:key:{$field_group['key']}"), 'acf'); wp_cache_delete(acf_cache_key('acf_get_field_group_posts'), 'acf'); } function acf_delete_field_group($id = 0) { acf_disable_filters(); $field_group = acf_get_field_group($id); if (!$field_group || !$field_group['ID']) { return false; } $fields = acf_get_fields($field_group); if ($fields) { foreach ($fields as $field) { acf_delete_field($field['ID']); } } wp_delete_post($field_group['ID'], true); acf_flush_field_group_cache($field_group); do_action('acf/delete_field_group', $field_group); return true; } function acf_trash_field_group($id = 0) { acf_disable_filters(); $field_group = acf_get_field_group($id); if (!$field_group || !$field_group['ID']) { return false; } $fields = acf_get_fields($field_group); if ($fields) { foreach ($fields as $field) { acf_trash_field($field['ID']); } } wp_trash_post($field_group['ID'], true); acf_flush_field_group_cache($field_group); do_action('acf/trash_field_group', $field_group); return true; } function acf_untrash_field_group($id = 0) { acf_disable_filters(); $field_group = acf_get_field_group($id); if (!$field_group || !$field_group['ID']) { return false; } $fields = acf_get_fields($field_group); if ($fields) { foreach ($fields as $field) { acf_untrash_field($field['ID']); } } wp_untrash_post($field_group['ID'], true); acf_flush_field_group_cache($field_group); do_action('acf/untrash_field_group', $field_group); return true; } function _acf_untrash_field_group_post_status($new_status, $post_id, $previous_status) { return get_post_type($post_id) === 'acf-field-group' ? $previous_status : $new_status; } add_action('wp_untrash_post_status', '_acf_untrash_field_group_post_status', 10, 3); function acf_is_field_group($field_group = false) { return is_array($field_group) && isset($field_group['key']) && isset($field_group['title']); } function acf_duplicate_field_group($id = 0, $new_post_id = 0) { acf_disable_filters(); $field_group = acf_get_field_group($id); if (!$field_group || !$field_group['ID']) { return false; } $fields = acf_get_fields($field_group); $field_group['ID'] = $new_post_id; $field_group['key'] = uniqid('group_'); if (!$new_post_id) { $field_group['title'] .= ' (' . __('copy', 'acf') . ')'; } if (!$field_group['ID']) { $field_group['ID'] = wp_insert_post(array('post_title' => $field_group['key'])); } $duplicates = acf_duplicate_fields($fields, $field_group['ID']); $field_group = acf_update_field_group($field_group); do_action('acf/duplicate_field_group', $field_group); return $field_group; } function acf_get_field_group_style($field_group) { $style = ''; $elements = array('permalink' => '#edit-slug-box', 'the_content' => '#postdivrich', 'excerpt' => '#postexcerpt', 'custom_fields' => '#postcustom', 'discussion' => '#commentstatusdiv', 'comments' => '#commentsdiv', 'slug' => '#slugdiv', 'author' => '#authordiv', 'format' => '#formatdiv', 'page_attributes' => '#pageparentdiv', 'featured_image' => '#postimagediv', 'revisions' => '#revisionsdiv', 'categories' => '#categorydiv', 'tags' => '#tagsdiv-post_tag', 'send-trackbacks' => '#trackbacksdiv'); if (is_array($field_group['hide_on_screen'])) { $hide = array(); foreach ($field_group['hide_on_screen'] as $k) { if (isset($elements[$k])) { $id = $elements[$k]; $hide[] = $id; $hide[] = '#screen-meta label[for=' . substr($id, 1) . '-hide]'; } } $style = implode(', ', $hide) . ' {display: none;}'; } return apply_filters('acf/get_field_group_style', $style, $field_group); } function acf_get_field_group_edit_link($post_id) { if ($post_id && acf_current_user_can_admin()) { return admin_url('post.php?post=' . $post_id . '&action=edit'); } return ''; } function acf_prepare_field_group_for_export($field_group = array()) { acf_extract_vars($field_group, array('ID', 'local', '_valid')); $field_group['fields'] = acf_prepare_fields_for_export($field_group['fields']); return apply_filters('acf/prepare_field_group_for_export', $field_group); } function acf_prepare_field_group_for_import($field_group) { if ($field_group['fields']) { foreach ($field_group['fields'] as $i => &$field) { $field['parent'] = $field_group['key']; $field['menu_order'] = $i; } } return apply_filters('acf/prepare_field_group_for_import', $field_group); } function acf_import_field_group($field_group) { $filters = acf_disable_filters(); $field_group = acf_get_valid_field_group($field_group); $field_group = acf_prepare_field_group_for_import($field_group); $fields = acf_prepare_fields_for_import($field_group['fields']); $ids = array(); if ($field_group['ID']) { $db_fields = acf_prepare_fields_for_import(acf_get_fields($field_group)); $keys = wp_list_pluck($fields, 'key'); foreach ($db_fields as $field) { $ids[$field['key']] = $field['ID']; if (!in_array($field['key'], $keys)) { acf_delete_field($field['ID']); } } } if (!$field_group['ID']) { $field_group['ID'] = wp_insert_post(array('post_title' => $field_group['key'])); } $ids[$field_group['key']] = $field_group['ID']; if ($fields) { foreach ($fields as $field) { if (isset($ids[$field['key']])) { $field['ID'] = $ids[$field['key']]; } if (isset($ids[$field['parent']])) { $field['parent'] = $ids[$field['parent']]; } $field = acf_update_field($field); $ids[$field['key']] = $field['ID']; } } $field_group = acf_update_field_group($field_group); acf_enable_filters($filters); do_action('acf/import_field_group', $field_group); return $field_group; }