Hi there,
There is a bug in Advanced Post Creation.
Reproduction:
- Set a Select field, and enable “populate with a taxonomy”.
- In Post Creation mapping, add a mapping to store the Taxonomy.
Then, when you post the form, it will create a new category, which is numeric.
Cause
The GF select field, when populated with a taxonomy, sets the value as the Taxonomy ID, and the label as the label.
In Advanced Post Creation, the mapping of existing taxonomies is in the function get_taxonomy_mapping_term_ids:
foreach ( $values as $val ) {
$existing_term = get_term_by( 'name', $val, $taxonomy );
if ( $existing_term ) {
$term_ids[] = $existing_term->term_id;
} else {
$new_term = wp_insert_term( $val, $taxonomy );
}
[...]
}
You can see that the taxonomies are searched by their name, and not by ID, which breaks everything. The taxonomy is not found, and a new one is added with the label corresponding to the ID.
Proposed solution
The mapping of the taxonomies should rely on the same principle than Wordpress: if this is an integer, you should call:
get_term_by('id', $val, taxonomy);
And if it’s a string, by:
get_term_by('name', $val, $taxonomy).