Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Gravity Wiz // WooCommerce Gravity Forms Add-on: Add support for removing a field from the product description in the cart.
<?php
/**
* WooCommerce Gravity Forms Add-on: Add support for removing a field from the product description in the cart.
*
*/
class WooGFRemoveFieldFromProductDescription {
public function __construct() {
add_action( 'gform_field_advanced_settings', array( $this, 'field_settings_ui' ), 10, 2 );
add_action( 'gform_editor_js', array( $this, 'field_settings_js' ) );
add_filter( 'woocommerce_get_item_data', array( $this, 'modify_item_data' ), 11, 2 );
add_action( 'woocommerce_add_order_item_meta', array( $this, 'delete_order_item_meta' ), 11, 2 );
}
public function modify_item_data( $other_data, $cart_item ) {
$form_id = rgars( $cart_item, '_gravity_form_data/id' );
if( ! $form_id )
return $other_data;
$form = GFFormsModel::get_form_meta( $form_id );
foreach( $form['fields'] as $field ) {
if( ! rgar( $field, 'wgfrfEnable' ) )
continue;
// reindex array for next loop
$other_data = array_values( $other_data );
for( $i = count( $other_data ) - 1; $i >= 0; $i-- ) {
if( $other_data[$i]['name'] == GFCommon::get_label( $field ) )
unset( $other_data[$i] );
}
}
return $other_data;
}
public function delete_order_item_meta( $item_id, $cart_item ) {
$form_id = rgars( $cart_item, '_gravity_form_data/id' );
if( ! $form_id )
return;
$form = GFFormsModel::get_form_meta( $form_id );
foreach( $form['fields'] as $field ) {
if( ! rgar( $field, 'wgfrfEnable' ) )
continue;
woocommerce_delete_order_item_meta( $item_id, GFCommon::get_label( $field ) );
}
}
public function field_settings_ui( $position ) {
if( $position != 450 )
return;
?>
<li class="wgfrf-enable-setting field_setting">
<input type="checkbox" id="wgfrf-enable" value="1" onclick="SetFieldProperty( 'wgfrfEnable', this.checked )">
<label class="inline" for="wgfrf-enable">
<?php _e( 'Remove This Field From WooCommerce Cart Item Description' ); ?>
</label>
</li>
<?php
}
public function field_settings_js() {
?>
<script type="text/javascript">
(function($) {
$(document).bind('gform_load_field_settings', function(event, field, form) {
$("#wgfrf-enable").attr( 'checked', field.wgfrfEnable == true );
});
for( inputType in fieldSettings ) {
if( fieldSettings.hasOwnProperty( inputType ) )
fieldSettings[inputType] += ', .wgfrf-enable-setting';
}
})(jQuery);
</script>
<?php
}
}
new WooGFRemoveFieldFromProductDescription();
@vonder

This comment has been minimized.

Copy link

vonder commented Apr 7, 2014

How can I use this code, where do I place the file within WooCommerce Gravity Forms Add-on? I really need this functionality. Thanks.

@pusscatandportia

This comment has been minimized.

Copy link

pusscatandportia commented Apr 9, 2014

You can just place this code into the end of functions.php

@inhabitant

This comment has been minimized.

Copy link

inhabitant commented Dec 6, 2016

Hi,

thanks for sharing this!
Where should I exactly paste this code?

If I paste it in the functions.php from my theme the website collapses.

Thanks,
Juan

@shayanazali

This comment has been minimized.

Copy link

shayanazali commented Dec 5, 2019

hi
I really need this
how should i use this code?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.