The fallback_intermediate_image_sizes WordPress PHP filter allows you to modify the image sizes generated for non-image mime types.
Usage
add_filter( 'fallback_intermediate_image_sizes', 'your_custom_function', 10, 2 ); function your_custom_function( $fallback_sizes, $metadata ) { // Your custom code here return $fallback_sizes; }
Parameters
$fallback_sizes (string[])
: An array of image size names.$metadata (array)
: Current attachment metadata.
More information
See WordPress Developer Resources: fallback_intermediate_image_sizes
Examples
Removing a specific image size for non-image files
Remove the ‘medium’ image size for non-image files.
add_filter( 'fallback_intermediate_image_sizes', 'remove_medium_size_for_non_images', 10, 2 ); function remove_medium_size_for_non_images( $fallback_sizes, $metadata ) { $key = array_search( 'medium', $fallback_sizes ); if ( false !== $key ) { unset( $fallback_sizes[ $key ] ); } return $fallback_sizes; }
Adding a custom image size for non-image files
Add a custom image size for non-image files.
add_filter( 'fallback_intermediate_image_sizes', 'add_custom_size_for_non_images', 10, 2 ); function add_custom_size_for_non_images( $fallback_sizes, $metadata ) { $fallback_sizes[] = 'custom-size'; return $fallback_sizes; }
Change all non-image files to a specific image size
Set all non-image files to use the ‘large’ image size.
add_filter( 'fallback_intermediate_image_sizes', 'set_large_size_for_non_images', 10, 2 ); function set_large_size_for_non_images( $fallback_sizes, $metadata ) { return array( 'large' ); }
Remove all image sizes for non-image files
Remove all image sizes for non-image files.
add_filter( 'fallback_intermediate_image_sizes', 'remove_all_sizes_for_non_images', 10, 2 ); function remove_all_sizes_for_non_images( $fallback_sizes, $metadata ) { return array(); }
Set different sizes based on file type
Set different image sizes for different file types.
add_filter( 'fallback_intermediate_image_sizes', 'set_sizes_based_on_file_type', 10, 2 ); function set_sizes_based_on_file_type( $fallback_sizes, $metadata ) { if ( isset( $metadata['filetype']['ext'] ) && 'pdf' === $metadata['filetype']['ext'] ) { return array( 'large', 'medium' ); } else { return array( 'thumbnail', 'small' ); } }