コード例 #1
0
ファイル: 5.0.0.php プロジェクト: rousnay/lighthouse
function _migrate_field_group_500($ofg)
{
    // global
    global $wpdb;
    // get post status
    $post_status = $ofg->post_status;
    // create new field group
    $nfg = array('ID' => 0, 'title' => $ofg->post_title, 'menu_order' => $ofg->menu_order);
    // location rules
    $groups = array();
    // get all rules
    $rules = get_post_meta($ofg->ID, 'rule', false);
    if (is_array($rules)) {
        $group_no = 0;
        foreach ($rules as $rule) {
            // if field group was duplicated, it may now be a serialized string!
            $rule = maybe_unserialize($rule);
            // does this rule have a group?
            // + groups were added in 4.0.4
            if (!isset($rule['group_no'])) {
                $rule['group_no'] = $group_no;
                // sperate groups?
                if (get_post_meta($ofg->ID, 'allorany', true) == 'any') {
                    $group_no++;
                }
            }
            // extract vars
            $group = acf_extract_var($rule, 'group_no');
            $order = acf_extract_var($rule, 'order_no');
            // add to group
            $groups[$group][$order] = $rule;
            // sort rules
            ksort($groups[$group]);
        }
        // sort groups
        ksort($groups);
    }
    $nfg['location'] = $groups;
    // settings
    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);
    }
    // Note: acf_update_field_group will call the acf_get_valid_field_group function and apply 'compatibility' changes
    // add old ID reference
    $nfg['old_ID'] = $ofg->ID;
    // save field group
    $nfg = acf_update_field_group($nfg);
    // trash?
    if ($post_status == 'trash') {
        acf_trash_field_group($nfg['ID']);
    }
    // return
    return $nfg;
}
コード例 #2
0
 function trashed_post($post_id)
 {
     // validate post type
     if (get_post_type($post_id) != 'acf-field-group') {
         return;
     }
     // trash field group
     acf_trash_field_group($post_id);
 }
コード例 #3
0
function acf_update_500_field_group($ofg)
{
    // global
    global $wpdb;
    // create new field group
    $nfg = array('ID' => 0, 'title' => $ofg->post_title, 'menu_order' => $ofg->menu_order);
    // location rules
    $groups = array();
    // get all rules
    $rules = get_post_meta($ofg->ID, 'rule', false);
    if (is_array($rules)) {
        $group_no = 0;
        foreach ($rules as $rule) {
            // if field group was duplicated, it may now be a serialized string!
            $rule = maybe_unserialize($rule);
            // does this rule have a group?
            // + groups were added in 4.0.4
            if (!isset($rule['group_no'])) {
                $rule['group_no'] = $group_no;
                // sperate groups?
                if (get_post_meta($ofg->ID, 'allorany', true) == 'any') {
                    $group_no++;
                }
            }
            // extract vars
            $group = acf_extract_var($rule, 'group_no');
            $order = acf_extract_var($rule, 'order_no');
            // add to group
            $groups[$group][$order] = $rule;
            // sort rules
            ksort($groups[$group]);
        }
        // sort groups
        ksort($groups);
    }
    $nfg['location'] = $groups;
    // settings
    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);
    }
    // Note: acf_update_field_group will call the acf_get_valid_field_group function and apply 'compatibility' changes
    // save field group
    $nfg = acf_update_field_group($nfg);
    // action for 3rd party
    do_action('acf/update_500_field_group', $nfg, $ofg);
    // trash?
    if ($ofg->post_status == 'trash') {
        acf_trash_field_group($nfg['ID']);
    }
    // global
    global $wpdb;
    // get field from postmeta
    $rows = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->postmeta} WHERE post_id = %d AND meta_key LIKE %s", $ofg->ID, 'field_%'), ARRAY_A);
    // check
    if ($rows) {
        // loop
        foreach ($rows as $row) {
            // bail early if key already migrated (potential duplicates in DB)
            if (acf_has_done('update_500_field_group_' . $ofg->ID . '_' . $row['meta_key'])) {
                continue;
            }
            // vars
            $field = $row['meta_value'];
            $field = maybe_unserialize($field);
            $field = maybe_unserialize($field);
            // run again for WPML
            // add parent
            $field['parent'] = $nfg['ID'];
            // migrate field
            $field = acf_update_500_field($field);
        }
    }
    // return
    return $nfg;
}