Preserve Field Selections on Repopulation

Code

Filename: gppa-preserve-selections.php

<?php
/**
 * Gravity Perks // Populate Anything // Preserve Field Selections on Repopulation
 * https://gravitywiz.com/documentation/gravity-forms-populate-anything/
 */
// Update "123" to your form ID and "4" to your field ID.
add_filter( 'gppa_input_choices_123_4', function( $choices, $field, $objects ) {
	$field_values    = gp_populate_anything()->get_field_values_from_request();
	$selected_values = (array) rgar( $field_values, $field->id );
	if ( $field->type == 'checkbox' && ! empty( $selected_values ) ) {
		// look in field_values for values of index like 5.1, 5.2 etc. where 5 is the field id
		$selected_values = array();
		foreach ( $field_values as $key => $value ) {
			if ( strpos( (string) $key, $field->id . '.' ) === 0 ) {
				$selected_values[ $key ] = $value;
			}
		}
	}

	foreach ( $choices as &$choice ) {
		if ( in_array( $choice['value'], $selected_values, true ) ) {
			$choice['isSelected'] = true;
		}
	}

	return $choices;
}, 10, 3 );

// Update "123" to your form ID and "4" to your field ID.
add_filter( 'gppa_field_choices_posted_value_123_4', '__return_false' );

Leave a Reply

Your email address will not be published. Required fields are marked *

  • Trouble installing this snippet? See our troubleshooting tips.
  • Need to include code? Create a gist and link to it in your comment.
  • Reporting a bug? Provide a URL where this issue can be recreated.

By commenting, I understand that I may receive emails related to Gravity Wiz and can unsubscribe at any time.