Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cristacheda/5db1798cc64825e732bf22aee1d511c4 to your computer and use it in GitHub Desktop.
Save cristacheda/5db1798cc64825e732bf22aee1d511c4 to your computer and use it in GitHub Desktop.
Populate Gravity Forms dropdown field with Advanced Custom Fields repeater values.

Add Advanced Custom Fields repeater values to a Gravity Forms dropdown field

The code should be added in a separate file and then included in your functions.php using require.

Replace 1 from the code with the ID of the form that you want to dinamically populate with field values from ACF. You can find more info about the filters in the Gravity Forms documentation.

add_filter( 'gform_pre_render_1', 'populate_dropdown' );
add_filter( 'gform_pre_validation_1', 'populate_dropdown' );
add_filter( 'gform_admin_pre_render_1', 'populate_dropdown' );
add_filter( 'gform_pre_submission_filter_1', 'populate_dropdown' );

if ( $form['id'] != 1 ) {
   return $form;
}

if ( $field->id == 1 ) {
    $field->choices = $dropdownitems;
}
<?php
if ( !is_admin() ) {
add_filter( 'gform_pre_render_1', 'populate_dropdown' );
add_filter( 'gform_pre_validation_1', 'populate_dropdown' );
add_filter( 'gform_admin_pre_render_1', 'populate_dropdown' );
add_filter( 'gform_pre_submission_filter_1', 'populate_dropdown' );
function populate_dropdown( $form ) {
if ( $form['id'] != 1 ) {
return $form;
}
$acf_repeater = get_field( 'repeater_field' );
// declare the array
$dropdownitems = array();
// add first & default value of the dropdown
$dropdownitems[] = array(
'text' => 'Default value of dropdown',
'value' => ''
);
foreach ($acf_repeater as $acf_repeater_subfield) {
$dropdownitems[] = array(
'value' => $acf_repeater_subfield['subfield_name'],
'text' => $acf_repeater_subfield['subfield_name']
);
}
//Add repeater values as dropdown options
foreach ( $form['fields'] as &$field ) {
if ( $field->id == 1 ) {
$field->choices = $dropdownitems;
}
}
return $form;
wp_reset_postdata();
}
}
@zmayyem
Copy link

zmayyem commented Mar 8, 2021

Hello @cristacheda , thanks for your reply
yes yes this is work , but need to add this line before the modified code

$terms = get_the_terms( $post->ID, 'taxonomy_name' );

// Loop through objects
   foreach ($terms as $term) {
     $dropdownitems[] = array(
       'value' => $term->id,
       'text' => $term->name
     );
   }

Thanks again for your reply boss :)

@warengonzaga
Copy link

hey, @cristacheda a very useful code!

// add first & default value of the dropdown
$dropdownitems[] = array(
  'text' => 'Default value of dropdown',
  'value' => ''
);

These lines are safe to remove if you don't want to add any initial default value.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment