Using Gravity Forms ‘gform_media_upload_path’ PHP filter

The gform_media_upload_path filter allows you to change the location where files uploaded using the Post Image field are copied to when the post is created.

Usage

To apply the filter to all forms:

add_filter( 'gform_media_upload_path', 'your_function_name', 10, 3 );

To limit the scope of your function to a specific form, append the form id to the end of the hook name (format: gform_media_upload_path_FORMID):

add_filter( 'gform_media_upload_path_5', 'your_function_name', 10, 3 );

Parameters

  • $upload_dir (array)
    • $upload_dir['path'] (string): Full physical path to the folder.
    • $upload_dir['url'] (string): Full URL to the folder.
  • $form_id (integer): The ID of the form currently being processed.
  • $post_id (integer): The ID of the post created from the entry currently being processed.

More information

See Gravity Forms Docs: gform_media_upload_path

Examples

Log the current path

Find out the current path with logging enabled:

add_filter( 'gform_media_upload_path', function( $upload_dir, $form_id ) {
GFCommon::log_debug( "gform_media_upload_path(): upload_dir for form #{$form_id} => " . print_r( $upload_dir, true ) );
return $path_info;
}, 1, 2 );

Change the path and URL

Change the upload path and URL for the File Upload field:

add_filter( 'gform_media_upload_path', 'change_media_upload_path', 10, 3 );

function change_media_upload_path( $upload_dir, $form_id, $post_id ) {
    $upload_dir['path'] = '/home/public_html/yourdomainfolder/new/path/';
    $upload_dir['url'] = 'http://yourdomainhere.com/new/path/';
    return $upload_dir;
}

Change the path and URL for a specific form

Change the upload path and URL for the File Upload field in form ID 5:

add_filter( 'gform_media_upload_path_5', 'change_media_upload_path_for_form_5', 10, 3 );

function change_media_upload_path_for_form_5( $upload_dir, $form_id, $post_id ) {
    $upload_dir['path'] = '/home/public_html/yourdomainfolder/form_5_new/path/';
    $upload_dir['url'] = 'http://yourdomainhere.com/form_5_new/path/';
    return $upload_dir;
}

Add date-based subfolders to the path

Organize uploaded files into date-based subfolders:

add_filter( 'gform_media_upload_path', 'add_date_subfolders_to_path', 10, 3 );
function add_date_subfolders_to_path( $upload_dir, $form_id, $post_id ) {
$subfolder = date('Y/m');
$upload_dir['path'] = trailingslashit( $upload_dir['path'] ) . $subfolder;
$upload_dir['url'] = trailingslashit( $upload_dir['url'] ) . $subfolder;
return $upload_dir;
}