I found the solution, all credit goes to @gmazzap, who gave this great answer in this post: How do I save each option in a multiple select menu as it’s own meta_key + meta_value pair?
add_action( 'created_house_feature', 'save_house_feature_meta', 10, 2 );
function save_house_feature_meta( $term_id, $tt_id ) {
$old_feature_group = get_term_meta( $term->term_id, 'feature-group, true' );
$new_feature_groups = isset( $_POST['feature-group'] ) ? $_POST['feature-group'] : array();
if ( empty( $new_feature_group ) ) {
// No Feature Groups selected. Then, completely delete all Meta values for the Term.
delete_term_meta( $term_id, 'feature-group' );
} else {
$already_feature_group = array();
if ( ! empty( $old_feature_group ) ) {
foreach ( $old_feature_group as $value_feature_group ) {
if ( ! in_array( $value_feature_group, $new_feature_group ) ) {
// This value was selected, but now it isn't, so delete it.
delete_term_meta( $term_id, 'feature-group', $value_feature_group );
} else {
// This value is already saved, we can skip it from saving.
$already_feature_group[] = $value_feature_group;
}
}
}
// We don't save what is already saved.
$to_save_feature_group = array_diff( $new_feature_group, $already_feature_group );
if ( ! empty( $to_save_feature_group ) ) {
foreach ( $to_save_feature_group as $feature_group ) {
add_term_meta( $term_id, 'feature-group', $feature_group, false );
}
}
}
}