function process()

in web/wp-content/plugins/acf-extended/includes/modules/form/module-form-action-term.php [252:349]


    function process($form, $action){
        
        // apply tags
        $action = $this->setup_action($action, $form);
        
        // vars
        $save = $action['save'];
        $term_id = (int) acf_extract_var($save, 'target');
        
        // pre-insert term
        if($action['type'] === 'insert_term'){
            
            if(empty($action['save']['taxonomy'])){
                $action['save']['taxonomy'] = 'category';
            }
            
            // insert
            $insert = wp_insert_term($save['name'], $save['taxonomy']);
            
            // invalid insert
            if($insert && !is_wp_error($insert)){
                $term_id = $insert['term_id'];
            }
            
        }
        
        // invalid target
        if(!$term_id){
            return false;
        }
        
        // generated id
        acfe_add_context(array('context' => 'save', 'generated_id' => $term_id));
        
        acfe_apply_tags($action['save']['name']);
        acfe_apply_tags($action['save']['slug']);
        
        $save['name'] = $action['save']['name'];
        $save['slug'] = $action['save']['slug'];
        
        acfe_delete_context('context', 'generated_id');
        
        // get term
        $term = get_term($term_id);
        
        // validate
        if(!$term || is_wp_error($term)){
            return false;
        }
    
        // default term arguments
        $args = array(
            'ID'       => $term_id,
            'taxonomy' => $term->taxonomy
        );
    
        // construct term arguments
        foreach($save as $term_field => $value){
        
            // name, slug, taxonomy, parent etc...
            if(in_array($term_field, $this->fields) && !acf_is_empty($value)){
                $args[ $term_field ] = $value;
            }
        
        }
    
        // filters
        $args = apply_filters("acfe/form/submit_term_args",                          $args, $form, $action);
        $args = apply_filters("acfe/form/submit_term_args/form={$form['name']}",     $args, $form, $action);
        $args = apply_filters("acfe/form/submit_term_args/action={$action['name']}", $args, $form, $action);
    
        // bail early
        if($args === false){
        
            // delete pre-insert term
            if($action['type'] === 'insert_term'){
                wp_delete_term($term_id, $save['taxonomy']);
            }
        
            return false;
        
        }
    
        // update term
        $update = wp_update_term($args['ID'], $args['taxonomy'], $args);
    
        // bail early
        if(!$update || is_wp_error($update)){
            return false;
        }
        
        // return
        return array(
            'term_id' => $update['term_id'],
            'args'    => $args
        );
        
    }