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
);
}