april-s
1/30/2015 - 6:00 AM

Connect a Gravity Form upload field to ACF Gallery Field when creating a front-end post submission, requires the jdn_create_image_id functio

Connect a Gravity Form upload field to ACF Gallery Field when creating a front-end post submission, requires the jdn_create_image_id function from https://gist.github.com/joshuadavidnelson/164a0a0744f0693d5746

<?php
 /**
  * Attach images uploaded through Gravity Form to ACF Gallery Field
  *
  * @author Joshua David Nelson, josh@joshuadnelson.com
  * @return void
  */
$gravity_form_id = 1; // gravity form id, or replace {$gravity_form_id} below with this number
add_filter( "gform_after_submission_{$gravity_form_id}", 'jdn_set_post_acf_gallery_field', 10, 2 );
function jdn_set_post_acf_gallery_field( $entry, $form ) {
	
	$gf_images_field_id = 1; // the upload field id
	$acf_field_id = 'field_546d0ad42e7f0'; // the acf gallery field id
	
	// get post, if there isn't one, bail
	if( isset( $entry['post_id'] ) ) {
		$post = get_post( $entry['post_id'] );
		if( is_null( $post ) )
			return;
	} else {
		return;
	}
	
	// Clean up images upload and create array for gallery field
	if( isset( $entry[ $gf_images_field_id ] ) ) {
		$images = stripslashes( $entry[ $gf_images_field_id ] );
		$images = json_decode( $images, true );
		if( !empty( $images ) && is_array( $images ) ) {
			$gallery = array();
			foreach( $images as $key => $value ) {
				// NOTE: this is the other function you need: https://gist.github.com/joshuadavidnelson/164a0a0744f0693d5746
				if( ! class_exists( 'JDN_Create_Media_File' ) )
					break;
				
				// Create the media library attachment and store the attachment id in the gallery array
				$create_image = new JDN_Create_Media_File( $value, $post->ID );
				$image_id = $create_image->attachment_id;
				if( absint( $image_id ) ) {
					$gallery[] = $image_id;
				}
			}
		}
	}
	
	// Update gallery field with array
	if( ! empty( $gallery ) ) {
		update_field( $acf_field_id, $gallery, $post->ID );
	}
}