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;
}
The topic ‘Rename media filename during upload’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
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 Privacy Policy. If you continue to use this site, you consent to our use of cookies.