Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save divsbhalala/cca87a912e52d376ff279819a76f7b00 to your computer and use it in GitHub Desktop.
Save divsbhalala/cca87a912e52d376ff279819a76f7b00 to your computer and use it in GitHub Desktop.
gravity form upload file to media library and use attachment ID in custom field
add_action( 'gform_after_create_post', 'gf_add_to_media_library', 10, 3 );
/**
* Save file upload fields under custom post field to the library
*
* @param $post_id The post identifier
* @param $entry The entry
* @param $form The form
*/
function gf_add_to_media_library ( $post_id, $entry, $form ) {
foreach($form['fields'] as $field){
//get media upload dir
$uploads = wp_upload_dir();
$uploads_dir = $uploads['path'];
$uploads_url = $uploads['url'];
//if its a custom field with input type file upload.
if( $field['type'] == 'post_custom_field' && $field['inputType'] == 'fileupload'){
$entry_id = $field['id'];
$files = rgar ( $entry, $entry_id );
$custom_field = $field['postCustomFieldName']; //custom field key
//if file field is not empty or not []
if ( $files !== '' && $files !== "[]"){
$patterns = ['[', ']', '"']; //get rid of crap
$file_entry = str_replace($patterns, '', $files);
$files = explode ( ',', $file_entry );
foreach ($files as $file) {
//each file is a url
//get the filename from end of url in match[1]
$filename = pathinfo($file, PATHINFO_FILENAME);
//add to media library
//WordPress API for image uploads.
include_once( ABSPATH . 'wp-admin/includes/image.php' );
include_once( ABSPATH . 'wp-admin/includes/file.php' );
include_once( ABSPATH . 'wp-admin/includes/media.php' );
$new_url = stripslashes($file);
$result = media_sideload_image( $new_url, $post_id, $filename, 'src');
//saving the image to field or thumbnail
if( strpos($field['cssClass'], 'thumb') === false ){
$attachment_ids[] = (int) get_attachment_id_from_src($result);
}
else{
set_post_thumbnail($post_id, (int) get_attachment_id_from_src($result) );
}
} //end foreach file
if ( isset( $attachment_ids ) ){
update_post_meta ($post_id, $custom_field, $attachment_ids);
}
} //end if files not empty
} //end if custom field of uploadfile
}
} //end for each form field
function get_attachment_id_from_src($image_src) {
global $wpdb;
$query = "SELECT ID FROM {$wpdb->posts} WHERE guid='$image_src'";
$id = $wpdb->get_var($query);
return $id;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment