Support

Account

Home Forums ACF PRO Rename media filename during upload

Solved

Rename media filename during upload

  • Hello all, perhaps someone with more experience can help me out with this one.

    My question is, how can I rename a media item (pdf file in my case) which is being uploaded through the ACF File upload field?

    In other words, how can I force a filename during upload (before it’s actually saved in DB), so that when the item is added to the media gallery / uploads directory, it has the forced filename (e.g., “custom_filename.pdf” instead of the default “original_filename.pdf”)?

    I searched extensively and found the acf/upload_prefilter filter. If I use this in conjunction with say WP’s upload_dir filter (for which scenario I found various working examples), all works as expected.

    But if i try to use it with wp_handle_upload_prefilter in order to rename my upload, nothing happens.

    The reason I’m using wp_handle_upload_prefilter is because as I understand it ACF relies on the native WP media uploading functionality. Is there some other approach I should try? If wp_handle_upload_prefilter is indeed the right choice for usage with acf/upload_prefilter then can someone please provide an example of the 2 working together?

    This is what my code looks like:

    add_filter('acf/upload_prefilter/name=file_upload_field_name', 'my_acf_upload_prefilter');
    function my_acf_upload_prefilter( $errors, $file, $field ) {
    	
    	// only allow admin
    	if( !current_user_can('manage_options') ) {
    		// this returns value to the wp uploader UI
    		// if you remove the ! you can see the returned values
    		$errors[] = 'test prefilter';
    		$errors[] = print_r($_FILES,true);
    		$errors[] = $_FILES['async-upload']['name'] ;
    	}
    	
    	add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
    	
    	// return
    	return $errors;
    	
    }
    
    function custom_upload_filter( $file ){
    	$file['name'] = 'custom_filename';
    	return $file;
    }

    Any pointers are greatly appreciated, thank you.

  • Solved.

    add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' ); needed to be assigned a priority of 11 or higher (since the WP default is 10).

    So the following code now allows me to rename the filename of a media file uploaded through my some_file_upload field, which is an ACF File Upload field:

    // ACF Upload Prefilter:
    add_filter('acf/upload_prefilter/name=some_file_upload', 'acf_upload_prefilter' );
    function acf_upload_prefilter() {
    	// WP Handle Upload Prefilter:
    	add_filter('wp_handle_upload_prefilter', 'rename_current_acf_upload', 11, 1);
    }
    function rename_current_acf_upload( $file ){
    	$file['name'] = 'custom-filename-' . $file['name'];
    	return $file;
    }
  • Thank you very much indeed!

Viewing 3 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic.

We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.