I need to create a Dropdown Field in a form. This dropdown field must be populated by a specific list in my custom taxonomy.
So instead of creating a "category" field I want the visitor to be able to select a custom taxonomy.
I need to create a Dropdown Field in a form. This dropdown field must be populated by a specific list in my custom taxonomy.
So instead of creating a "category" field I want the visitor to be able to select a custom taxonomy.
Hi Jacques,
There is no way to do this out of the box; however, this is something of personal interested to me so I'd like to take a look and see about getting you a snippet as time allows. Could you do me a favor and send me a message to david@ounceoftalent.com with a link to this post?
+1!
Hey guys! Any progress on this?
Hi Jacques, I have not had an opportunity to looks at this but in the mean time here is some old code where I've done something like this before. I put some notes in here on what you will need to update to make this work with you form. Disclaimer: this has not be tested with the latest Gravity Forms and this level of customization is not covered by standard support so bear with me if you run into any issues.
+2
I am trying to do something similar (I think). I have a site where each blog post represents a different location. Each location offers different programs. I was hoping to create one "Get More Info" Gform to place within a widget section. I need the Program Drop Down menu to be populated by the content found in the Programs Custom Field box of each blog post. Hopefully that makes sense.
Is that what the code linked to above is written to do? And if so, are we supposed to place it in the functions.php file?
Thanks for your help.
No, this code populates a drop down with the values of a custom taxonomy. Not post meta/custom field data. However, you could certainly modify this code to pull in custom field values. In either event the code would go in your themes functions.php file.
David
I tried the script you suggested but get an error. See - http://www.stayanight.co.za/test-taxonomy
The script is:
// update the "18" the ID of your form
add_action('gform_pre_render_10', 'update_gform');
function update_gform($form) {
// update "1" to the ID of your dropdown field,
// update "project" to the slug of your taxonomy
$form['fields']['1']['choices'] = ounce_posts_as_choices('type');
return $form;
}
// update '18' to the ID of your form
add_action('gform_post_submission_10', 'process_gform', 10, 1);
function process_gform($entry, $form) {
// update 'project' to your taxonomy slug,
// update the '13' to the to the field ID of your dropdown
ounce_add_taxonomy_to_post('type', $entry['1'], $entry['post_id']);
}
// generate GF choices array based on taxonomy
function ounce_taxonomy_as_choices($taxonomy = "categories") {
$taxonomy = get_terms($taxonomy, 'hide_empty=0');
$choices[0]['text'] = '';
$choices[0]['value'] = '';
$i = 1;
foreach($taxonomy as $category) {
$choices[$i]['text'] = $category->name;
$choices[$i]['value'] = $category->name;
$i++;
}
return $choices;
}
// add custom taxonomy category to post
function ounce_add_taxonomy_to_post($taxonomy = "categories", $value, $post_id) {
$categories = get_terms($taxonomy, array('hide_empty' => 0));
foreach($categories as $category) {
if($category->name == $value) {
$post = $post_id;
$id = (int) $category->term_id;
wp_set_object_terms($post, $id, $taxonomy, TRUE);
}
}
}
I updated the code to correct this error: http://pastie.org/1529752
I could use a little help with the sample code in http://pastie.org/1529752 - specifically the ounce_taxonomy_as_choices function and whether it might be possible to tweak this to be called via a gform_field_value_FIELDNAME for a dropdown to populate a custom taxonomy?
I am creating a plugin that will use GF as the submission system for a rideshare board of sorts. The plugin will create a custom post type, taxonomies and hopefully import the form upon activation. The sample you have based on gform_pre_render_## presents a challenge in that with the import I won't necessarily know the form #.
Can gform_field_value_dropdownfieldname accept array responses to populate the dropdowns? I'm using the Custom Post Types plugin which makes this selection dead simple for the standard dropdown type, but doesn't appear to support custom field dropdowns (http://wordpress.org/support/topic/plugin-gravity-forms-custom-post-types-cant-get-taxonomies-to-list-out?replies=5)
Found elegant solution.
add_filter("gform_pre_render", array(&$this, "populate_rideshare_type"));
function populate_rideshare_type($form){
foreach($form['fields'] as &$field) {
if($field['type'] != 'post_custom_field' && $field['postCustomFieldName'] != 'idealien_rideshare_type' )
continue;
$rideshare_types = get_terms( 'idealien_rideshare_type', array(
'hide_empty' => 0
) );
$choices = array(array('text' => 'Select A Type', 'value' => ' '));
foreach ( $rideshare_types as $type ) {
$choices[] = array('text' => $type ->name, 'value' => $type ->name);
}
$field['choices'] = $choices;
}
return $form;
}
Pretty slick. Do you have an example form online where that's in use? I'm sure many people would be interested in seeing it in action.
I'll post a link here and on the Idealien projects page once I have finished the re-factor into a stand-alone plugin.
Just have presentation layer left to work out so that the results display checks the plugin directory before the standard theme folder / template hierarchy, which is a known challenge to solve in a method that will play nice for all themes / etc.
Right now I've got a series of shortcodes in mind that will then be able to call either from content or archive-posttype.php.
J