Enables wordpress to sideload images from URL that don’t have file extension in the URL, very useful for WooCommerce CSV product importer
add_filter( 'wp_handle_sideload_prefilter', 'add_extension_if_none_exists' );
add_filter( 'wp_handle_upload_prefilter', 'add_extension_if_none_exists' );
function add_extension_if_none_exists( $file ) {
if ( pathinfo( $file['name'], PATHINFO_EXTENSION ) ) {
return $file;
}
$real_mime = wp_get_image_mime( $file['tmp_name'] );
if ( ! $real_mime ) {
return $file;
}
$mime_to_ext = apply_filters(
'getimagesize_mimes_to_exts',
array(
'image/jpeg' => 'jpg',
'image/png' => 'png',
'image/gif' => 'gif',
'image/bmp' => 'bmp',
'image/tiff' => 'tif',
'image/webp' => 'webp',
)
);
if ( ! empty( $mime_to_ext[ $real_mime ] ) ) {
$file['name'] .= '.' . $mime_to_ext[ $real_mime ];
}
return $file;
}