I'm using Gravity Forms and WooCommerce as well as the WooCommerce Gravity Forms Addons plugins. I have a form attached to a product which needs to do some calculations to determine the ultimate price for the product.
In order to do so, I have some intermediate calculational fields in the form which I don't want to show up in the cart, or in the entry for the order.
I've already reviewed and tried gform_pre_submission, and I can successfully remove the desired fields. The problem is that Gravity Forms apparently recalculates the form on submission and so unsetting the fields in gform_pre_submission breaks the calculations and causes the item added to the cart to have an incorrect value.
Obviously I can hide the fields in the cart with CSS, but that doesn't keep the necessary fields out of the entry and thus in the WooCommerce order information.
So, how can I omit the undesired fields from the entry, without breaking the calculations?
Thanks!
PS - Here's the presubmission code I tried in case there's an issue with my test
add_action( 'gform_pre_submission_5', 'pre_submission_handler' );
function pre_submission_handler( $form ) {
//remove some fields which we don't need to save
unset($_POST['input_23']); //remove base price
}
Edit: See David's code below. I made this one modification to it to deal with oddball products:
for( $i = count( $other_data ) - 1; $i >= 0; $i-- ) {
if (isset($other_data[$i]['name'])){ //if not, must be a WC variation, not GF so ignore
if( $other_data[$i]['name'] == GFCommon::get_label( $field ) )
unset( $other_data[$i] );
}
}
A screenshot of the $other_data value for a product with BOTH WooCommerce variations AND Gravity Forms Addons variations: