Фильтр getimagesize_mimes_to_exts
в WordPress позволяет изменить или расширить список MIME-типов и соответствующих им расширений файлов изображений. Это полезно, когда необходимо добавить поддержку новых форматов изображений или обработать файлы с некорректными расширениями, которые не совпадают с фактическим MIME-типом.
apply_filters( ‘getimagesize_mimes_to_exts’, array $mime_to_ext )
Фильтр getimagesize_mimes_to_exts
принимает массив $mime_to_ext
, где ключи представляют MIME-типы изображений (например, image/png
), а значения — соответствующие расширения (например, png
). Использование этого фильтра актуально, когда нужно добавить поддержку нестандартных форматов изображений или обработать файлы, у которых расширение не соответствует MIME-типу, например, для изображений webp
.
Пример 1: Добавление поддержки формата WebP
По умолчанию WordPress может не поддерживать формат WebP. Этот фильтр поможет добавить поддержку WebP, чтобы WordPress корректно определял расширение файла по MIME-типу.
add_filter( 'getimagesize_mimes_to_exts', 'add_webp_mime_extension' );
function add_webp_mime_extension( $mime_to_ext ) {
$mime_to_ext['image/webp'] = 'webp';
return $mime_to_ext;
}
Здесь мы добавляем MIME-тип image/webp
с расширением webp
. Теперь, если файл с расширением jpg
или png
окажется фактически формата WebP, WordPress сможет определить правильное расширение и корректно обработать файл.
Пример 2: Поддержка формата AVIF
Если вы хотите разрешить загрузку изображений в формате AVIF, этот фильтр поможет WordPress корректно распознавать AVIF-файлы.
add_filter( 'getimagesize_mimes_to_exts', 'add_avif_mime_extension' );
function add_avif_mime_extension( $mime_to_ext ) {
$mime_to_ext['image/avif'] = 'avif';
return $mime_to_ext;
}
Теперь WordPress будет воспринимать файлы AVIF корректно, распознавая их MIME-тип и сопоставляя его с расширением avif
.
Пример 3: Изменение расширения для TIFF изображений
В некоторых случаях вы можете столкнуться с ситуацией, когда требуется изменить стандартное расширение для определённого MIME-типа. Например, поменяем расширение для формата TIFF с tif
на tiff
.
add_filter( 'getimagesize_mimes_to_exts', 'change_tiff_extension' );
function change_tiff_extension( $mime_to_ext ) {
$mime_to_ext['image/tiff'] = 'tiff';
return $mime_to_ext;
}
Теперь файлы с MIME-типом image/tiff
будут сохраняться с расширением .tiff
, что может быть полезно для стандартов обработки или стилистических предпочтений.
Пример 4: Исправление загрузки файлов с некорректным расширением
Иногда пользователи могут загружать файлы с неправильным расширением, например, изображение WebP с расширением .png
. Если WordPress не находит соответствия, загрузка может завершиться ошибкой. Мы можем настроить фильтр, чтобы WordPress правильно интерпретировал MIME-тип и расширение.
add_filter( 'getimagesize_mimes_to_exts', 'fix_incorrect_extension' );
function fix_incorrect_extension( $mime_to_ext ) {
$mime_to_ext['image/webp'] = 'webp';
$mime_to_ext['image/jpeg'] = 'jpg';
return $mime_to_ext;
}
Этот код добавляет и обновляет соответствия для форматов WebP и JPEG. Теперь, если загруженный файл имеет MIME-тип WebP или JPEG, но с неправильным расширением, WordPress определит его корректно и сможет обработать файл без ошибок.
Пример 5: Логирование MIME-типа и расширений для отладки
Для отладки можно использовать этот фильтр, чтобы записывать MIME-типы и расширения изображений в журнал. Это может быть полезно для анализа форматов, с которыми работает WordPress.
add_filter( 'getimagesize_mimes_to_exts', 'log_mime_to_ext_mapping' );
function log_mime_to_ext_mapping( $mime_to_ext ) {
error_log( 'Current MIME to extension mapping: ' . print_r( $mime_to_ext, true ) );
return $mime_to_ext;
}
Этот код записывает текущий массив соответствий MIME-типа и расширений в лог-файл WordPress, что может помочь в отладке и проверке списка поддерживаемых форматов.
Заключение
Хук getimagesize_mimes_to_exts
позволяет гибко настраивать поддержку форматов изображений в WordPress, обеспечивая правильное соответствие между MIME-типами и расширениями файлов. Использование этого фильтра особенно полезно при работе с нестандартными форматами изображений и для предотвращения ошибок при загрузке файлов с неправильными расширениями.