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 function acf_has_upgrade() { $db_version = acf_get_db_version(); if ($db_version && acf_version_compare($db_version, '<', '5.5.0')) { return true; } if ($db_version !== ACF_VERSION) { acf_update_db_version(ACF_VERSION); } return false; } function acf_upgrade_all() { @set_time_limit(600); timer_start(); acf_dev_log('ACF Upgrade Begin.'); $db_version = acf_get_db_version(); if (acf_version_compare($db_version, '<', '5.0.0')) { acf_upgrade_500(); } if (acf_version_compare($db_version, '<', '5.5.0')) { acf_upgrade_550(); } acf_update_db_version(ACF_VERSION); global $wpdb; acf_dev_log('ACF Upgrade Complete.', $wpdb->num_queries, timer_stop(0)); } function acf_get_db_version() { return get_option('acf_version'); } function acf_update_db_version($version = '') { update_option('acf_version', $version); } function acf_upgrade_500() { acf_dev_log('ACF Upgrade 5.0.0.'); do_action('acf/upgrade_500'); acf_upgrade_500_field_groups(); acf_update_db_version('5.0.0'); } function acf_upgrade_500_field_groups() { acf_dev_log('ACF Upgrade 5.0.0 Field Groups.'); $ofgs = get_posts(array('numberposts' => -1, 'post_type' => 'acf', 'orderby' => 'menu_order title', 'order' => 'asc', 'suppress_filters' => true)); if ($ofgs) { foreach ($ofgs as $ofg) { acf_upgrade_500_field_group($ofg); } } } function acf_upgrade_500_field_group($ofg) { acf_dev_log('ACF Upgrade 5.0.0 Field Group.', $ofg); $nfg = array('ID' => 0, 'title' => $ofg->post_title, 'menu_order' => $ofg->menu_order); $rules = get_post_meta($ofg->ID, 'rule', false); $anyorall = get_post_meta($ofg->ID, 'allorany', true); if (is_array($rules)) { $rules = array_map('maybe_unserialize', $rules); $nfg['location'] = acf_convert_rules_to_groups($rules, $anyorall); } if ($position = get_post_meta($ofg->ID, 'position', true)) { $nfg['position'] = $position; } if ($layout = get_post_meta($ofg->ID, 'layout', true)) { $nfg['layout'] = $layout; } if ($hide_on_screen = get_post_meta($ofg->ID, 'hide_on_screen', true)) { $nfg['hide_on_screen'] = maybe_unserialize($hide_on_screen); } $nfg = acf_update_field_group($nfg); acf_dev_log('> Complete.', $nfg); do_action('acf/upgrade_500_field_group', $nfg, $ofg); acf_upgrade_500_fields($ofg, $nfg); if ($ofg->post_status == 'trash') { acf_trash_field_group($nfg['ID']); } return $nfg; } function acf_upgrade_500_fields($ofg, $nfg) { acf_dev_log('ACF Upgrade 5.0.0 Fields.'); global $wpdb; $rows = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->postmeta} WHERE post_id = %d AND meta_key LIKE %s", $ofg->ID, 'field_%'), ARRAY_A); if ($rows) { $checked = array(); foreach ($rows as $row) { $field = $row['meta_value']; $field = maybe_unserialize($field); $field = maybe_unserialize($field); if (isset($checked[$field['key']])) { continue; } $checked[$field['key']] = 1; $field['parent'] = $nfg['ID']; $field = acf_upgrade_500_field($field); } } } function acf_upgrade_500_field($field) { acf_dev_log('ACF Upgrade 5.0.0 Field.', $field); $field['menu_order'] = acf_extract_var($field, 'order_no', 0); if (substr($field['key'], 0, 6) !== 'field_') { $field['key'] = 'field_' . str_replace('field', '', $field['key']); } $sub_fields = array(); if ($field['type'] == 'repeater') { if (!empty($field['sub_fields'])) { foreach ($field['sub_fields'] as $sub_field) { $sub_fields[] = $sub_field; } } unset($field['sub_fields']); } elseif ($field['type'] == 'flexible_content') { if (is_array($field['layouts'])) { foreach ($field['layouts'] as $i => $layout) { $layout['key'] = uniqid('layout_'); if (!empty($layout['sub_fields'])) { foreach ($layout['sub_fields'] as $sub_field) { $sub_field['parent_layout'] = $layout['key']; $sub_fields[] = $sub_field; } } unset($layout['sub_fields']); $field['layouts'][$i] = $layout; } } } $field = acf_update_field($field); acf_dev_log('> Complete.', $field); if ($sub_fields) { foreach ($sub_fields as $sub_field) { $sub_field['parent'] = $field['ID']; acf_upgrade_500_field($sub_field); } } do_action('acf/update_500_field', $field); return $field; } function acf_upgrade_550() { acf_dev_log('ACF Upgrade 5.5.0.'); do_action('acf/upgrade_550'); acf_upgrade_550_termmeta(); acf_update_db_version('5.5.0'); } function acf_upgrade_550_termmeta() { acf_dev_log('ACF Upgrade 5.5.0 Termmeta.'); if (get_option('db_version') < 34370) { return; } $taxonomies = get_taxonomies(false, 'objects'); if ($taxonomies) { foreach ($taxonomies as $taxonomy) { acf_upgrade_550_taxonomy($taxonomy->name); } } do_action('acf/upgrade_550_termmeta'); } function acf_wp_upgrade_550_termmeta($wp_db_version, $wp_current_db_version) { if ($wp_db_version >= 34370 && $wp_current_db_version < 34370) { if (acf_version_compare(acf_get_db_version(), '>', '5.5.0')) { acf_upgrade_550_termmeta(); } } } add_action('wp_upgrade', 'acf_wp_upgrade_550_termmeta', 10, 2); function acf_upgrade_550_taxonomy($taxonomy) { acf_dev_log('ACF Upgrade 5.5.0 Taxonomy.', $taxonomy); global $wpdb; $search = $taxonomy . '_%'; $_search = '_' . $search; $search = str_replace('_', '\\_', $search); $_search = str_replace('_', '\\_', $_search); $rows = $wpdb->get_results($wpdb->prepare("SELECT * \n\t\tFROM {$wpdb->options} \n\t\tWHERE option_name LIKE %s \n\t\tOR option_name LIKE %s", $search, $_search), ARRAY_A); if ($rows) { foreach ($rows as $row) { if (!preg_match("/^(_?){$taxonomy}_(\\d+)_(.+)/", $row['option_name'], $matches)) { continue; } $term_id = $matches[2]; $meta_key = $matches[1] . $matches[3]; $meta_value = $row['option_value']; $wpdb->insert($wpdb->termmeta, array('term_id' => $term_id, 'meta_key' => $meta_key, 'meta_value' => $meta_value)); acf_dev_log('ACF Upgrade 5.5.0 Term.', $term_id, $meta_key); do_action('acf/upgrade_550_taxonomy_term', $term_id); } } do_action('acf/upgrade_550_taxonomy', $taxonomy); }