Via Gravity Form is het mogelijk om je bezoekers (concept)berichten te laten plaatsen. Je kunt hierbij gebruik maken van verschillende vooraf gedefinieerde velden. Helaas is er nog geen standaard veld beschikbaar voor custom post types en taxonomies. Gelukkig is deze functionaliteit met behulp van filters en hooks wel te realiseren.
Populate dropdown
function custom_gform_dropdown_terms($arguments, $withEmpty = true) { $terms = get_terms($arguments); $items = array(); if($withEmpty) { $items[] = array('text' => '', 'value' => ''); } foreach($terms as $term) { $items[] = array('value' => $term->term_id, 'text' => $term->name); } return $items; } function custom_gform_populate_dropdown($form) { $items = apply_filters('custom_gform_taxonomies_classes', array()); foreach($form['fields'] as &$field) { $classes = explode(' ', $field['cssClass']); foreach($items as $class => $taxonomy) { if(in_array($class, $classes)) { $field['type'] = 'select'; $field['choices'] = custom_gform_dropdown_terms($taxonomy); } } } return $form; } add_filter('gform_pre_render', 'custom_gform_populate_dropdown');
Koppel CSS class met taxonomy
Vervolgens kun je met behulp van de volgende filter CSS classes koppelen aan een taxonomy.
function dvt_gform_taxonomy_classes($tc) { $tc['taxonomy-level'] = 'level'; $tc['taxonomy-region'] = 'region'; return $tc; } add_filter('custom_gform_taxonomies_classes', 'dvt_gform_taxonomy_classes');
Terms opslaan per post
Tot slot zorgt het volgende code fragment er voor dat de terms worden opgeslagen bij de betreffende post.
function custom_gform_save_terms($lead, $form) { // Check if the submission contains a WordPress post if(isset($lead['post_id'])) { $items = apply_filters('custom_gform_taxonomies_classes', array()); foreach($form['fields'] as &$field) { $classes = explode(' ', $field['cssClass']); foreach($items as $class => $taxonomy) { if(in_array($class, $classes)) { $value = (int) $lead[$field['id']]; wp_set_object_terms($lead['post_id'], $value, $taxonomy); } } } } } add_action('gform_post_submission', 'custom_gform_save_terms', 10, 2);
Één reactie op “Gravity Forms custom taxonomies dropdown”
[…] Dit blogartikel was vermeld op Twitter door kflahaut.
kflahaut heeft gezegd: RT @DeFries: Gravity Forms custom taxonomies
dropdown http://bit.ly/gAMrwm […]