getimagesize_mimes_to_exts хук-фильтр . WP 3.0.0

Click here to view original web page at wp-kama.ru

Позволяет добавить MIME тип и соответствующее ему расширение файла-картинки.

Этот фильтр используется в ядре в случаях, когда загружается картинка с расширением отличным от реального MIME типа файла.

Например, у нас есть файл-картинка my-image.jpg, но реальный формат картинки PNG, т.е. в названии файла ошибка. В этом случае, в ходе проверок, WordPress дойдет до этого хука и из него получит расширение файла по реальному MIME типу файла 'image/png' => 'png', а затем заменит это расширение в назывании файла, т.е. в результате на сайт будет загружена картинка с названием my-image.png.

Этот хук может пригодится когда мы добавляем свои форматы картинок, например webp и нам также нужно предусмотреть что расширение в названии файла может отличаться от реального формата.

Использование

add_filter( 'getimagesize_mimes_to_exts', 'filter_function_name_2198' );
function filter_function_name_2198( $mime_to_ext ){
	// filter...

	return $mime_to_ext;
}
$mime_to_ext(массив)

Массив MIME типов и соответствующих расширений фалов.

array(
	'image/jpeg' => 'jpg',
	'image/png'  => 'png',
	'image/gif'  => 'gif',
	'image/bmp'  => 'bmp',
	'image/tiff' => 'tif',
)

Примеры

#1 Исправляем расширение .webp формата и разрешаем загрузку.

Допустим мы разрешили загрузку картинок с форматом webp, таким кодом:

add_filter( 'upload_mimes', function( $mimes ){
	$mimes['webp'] = 'image/webp';

	return $mimes;
} );

И теперь пытаемся загрузить скаченную где-то в сети картинку с расширением .png, например img.png, реальный формат которой webp. Картинка в этом случае не загрузится, а мы увидим сообщение что «данный формат запрещен в целях безопасности». Но как так-то? PNG же загружали на сайт 100500 раз. И даже когда выясним что реальный формат webp, - так мы же его разрешили к загрузке. Вся эта ситуация будет походить на какой-то дикий глюк!

Так происходит, потому что в ходе проверок, WP выясняет что указанное расширение файла не соответствует реальному типу файла и пытается найти правильное расширение файла, и провести повторную проверку файла, но не находит его, потому что по дефолту его нет и проверка проваливается.

Добавить нужное соответствие можно через этот хук:

add_filter( 'getimagesize_mimes_to_exts', function( $mime_to_ext ){
	$mime_to_ext['image/webp'] = 'webp';

	return $mime_to_ext;
} );

Список изменений

Где вызывается хук

$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',
	)
);

Где используется хук в ядре WP

Использование не найдено.