Функция wp_get_image_mime()
в WordPress позволяет получить реальный MIME-тип изображения, исходя из его содержимого, а не из расширения файла. Это полезно для предотвращения ошибок или обмана, когда файл с расширением .jpg
может оказаться на самом деле файлом формата .png
, и наоборот.
wp_get_image_mime( string $file ): string|false
Параметры:
$file
(string, обязательный) — Полный путь к файлу изображения на сервере.
Возвращаемое значение:
- Строка — MIME-тип файла, если его удалось определить.
false
— Если тип файла определить не удалось.
Функция опирается на PHP-функции exif_imagetype()
и getimagesize()
, которые проверяют содержимое файла для точного определения его типа, независимо от названия файла или расширения.
Пример 1: Определение MIME-типа изображения в теме
В этом примере мы определяем MIME-тип скриншота темы, который находится в каталоге шаблона:
$image_path = get_template_directory() . '/screenshot.png';
$image_mime = wp_get_image_mime( $image_path );
if ( $image_mime ) {
echo 'MIME-тип изображения: ' . esc_html( $image_mime );
} else {
echo 'Не удалось определить MIME-тип изображения.';
}
Результат:
MIME-тип изображения: image/png
Пример 2: Проверка изображения перед загрузкой на сервер
Прежде чем загружать изображение на сервер, можно убедиться, что файл является изображением, проверив его MIME-тип:
$file = $_FILES['image']['tmp_name']; // Временный файл, загруженный через форму
$image_mime = wp_get_image_mime( $file );
if ( $image_mime === 'image/jpeg' || $image_mime === 'image/png' ) {
echo 'Файл является изображением и может быть загружен.';
} else {
echo 'Неверный тип файла. Пожалуйста, загрузите изображение в формате JPEG или PNG.';
}
Результат (если файл верен):
Файл является изображением и может быть загружен.
Пример 3: Определение MIME-типа для изображения с произвольным именем
Иногда изображения могут иметь неправильное расширение файла, но содержать корректные данные. С помощью wp_get_image_mime()
можно выяснить реальный MIME-тип такого файла:
$wrong_extension_image = '/path/to/uploaded/file.jpg'; // Файл с расширением .jpg, но это PNG
$image_mime = wp_get_image_mime( $wrong_extension_image );
if ( $image_mime ) {
echo 'Реальный MIME-тип файла: ' . esc_html( $image_mime );
} else {
echo 'Не удалось определить MIME-тип файла.';
}
Результат:
Реальный MIME-тип файла: image/png
Пример 4: Проверка изображений в медиатеке WordPress
Если необходимо проверить все изображения, которые уже находятся в медиатеке WordPress, можно использовать функцию wp_get_image_mime()
для их обработки:
$attachment_id = 512; // ID вложения из медиатеки
$image_path = get_attached_file( $attachment_id );
$image_mime = wp_get_image_mime( $image_path );
if ( $image_mime ) {
echo 'Изображение с ID ' . esc_html( $attachment_id ) . ' имеет MIME-тип: ' . esc_html( $image_mime );
} else {
echo 'Не удалось определить MIME-тип изображения.';
}
Результат:
Изображение с ID 512 имеет MIME-тип: image/jpeg
Пример 5: Использование MIME-типа для проверки типов файлов при загрузке
Функцию можно интегрировать в процесс загрузки файлов, чтобы автоматически отклонять неподдерживаемые форматы:
function validate_image_upload( $file ) {
$mime_type = wp_get_image_mime( $file['tmp_name'] );
if ( ! $mime_type ) {
return 'Не удалось определить тип файла.';
}
if ( $mime_type !== 'image/jpeg' && $mime_type !== 'image/png' ) {
return 'Неподдерживаемый тип изображения. Пожалуйста, загрузите JPEG или PNG.';
}
return true;
}
// Пример обработки загружаемого файла
$file = $_FILES['image'];
$validation_result = validate_image_upload( $file );
if ( $validation_result === true ) {
echo 'Файл успешно загружен.';
} else {
echo $validation_result;
}
Заключение
Функция wp_get_image_mime()
— это полезный инструмент для работы с изображениями в WordPress, который позволяет точно определить тип файла. Она особенно полезна, когда требуется проверка правильности типа изображения при его загрузке или при работе с файлами, расширения которых могут быть изменены или неверны.