Метаданные изображений, такие как EXIF, IPTC и другие служебные данные, часто занимают дополнительное место и могут замедлять загрузку сайта. Особенно это актуально для сайтов на WordPress, где большое количество медиафайлов влияет на производительность. В этой статье мы подробно рассмотрим, как удалить метаданные из изображений в WordPress, используя плагины и собственный код, чтобы ускорить работу сайта и снизить нагрузку на сервер.
Что такое метаданные изображений и почему их стоит удалять
Метаданные — это информация, встроенная в файл изображения, которая содержит данные о камере, настройках съёмки, геолокации, авторских правах и других характеристиках. Веб-сайты обычно не нуждаются в этой информации, а она увеличивает размер файла, что влияет на скорость загрузки страницы и SEO.
Удаление метаданных уменьшает размер файлов и повышает конфиденциальность, так как, например, данные GPS могут раскрывать местоположение фотосъёмки.
Для сайтов на WordPress, особенно интернет-магазинов и блогов с большим количеством изображений, оптимизация медиа — важная задача для улучшения UX и SEO.
Удаление метаданных с помощью плагинов WordPress
Плагин Imsanity
Imsanity автоматически изменяет размеры загружаемых изображений и удаляет часть метаданных. Это отличный вариант для быстрой оптимизации без сложных настроек.
После установки и активации плагина зайдите в его настройки и включите опции по удалению метаданных и масштабированию изображений.
Плагин Clearfy Pro
Clearfy Pro — мощный инструмент для оптимизации WordPress, в том числе удаление избыточных метаданных из изображений. В настройках плагина есть функция очистки метаданных при загрузке и массовой обработке уже загруженных файлов.
Это удобный вариант для комплексного улучшения производительности сайта.
Удаление метаданных на лету с помощью собственного кода
Если хотите обойтись без плагинов, можно добавить в тему или плагин следующий код для удаления метаданных при загрузке изображения.
add_filter('wp_handle_upload_prefilter', 'wpconsult_remove_image_metadata');
function wpconsult_remove_image_metadata($file) {
$image_types = array('image/jpeg', 'image/png');
if (in_array($file['type'], $image_types)) {
$image_path = $file['tmp_name'];
$image = wpconsult_create_image_from_file($image_path, $file['type']);
if ($image) {
imagejpeg($image, $image_path, 90); // Перезаписываем, удаляя метаданные
imagedestroy($image);
}
}
return $file;
}
function wpconsult_create_image_from_file($path, $type) {
switch ($type) {
case 'image/jpeg':
return imagecreatefromjpeg($path);
case 'image/png':
return imagecreatefrompng($path);
default:
return false;
}
}Этот код использует GD-библиотеку PHP для перезаписи JPEG и PNG изображений без метаданных. Он срабатывает на этапе загрузки, очищая файлы перед сохранением в медиабиблиотеку.
Обратите внимание, что такой подход может немного снизить качество из-за сжатия, поэтому параметр качества можно регулировать.
Массовое удаление метаданных из уже загруженных изображений
Если на сайте много изображений с метаданными, стоит провести массовую очистку. Для этого можно использовать плагин Media Cleaner, который помогает находить и удалять лишние файлы, а также можно комбинировать с плагинами оптимизации изображений.
Также можно написать WP-CLI команду, которая переберет все изображения и применит функцию очистки. Пример WP-CLI скрипта:
function wpconsult_clean_image_metadata($image_path) {
$image = wpconsult_create_image_from_file($image_path, mime_content_type($image_path));
if ($image) {
imagejpeg($image, $image_path, 90);
imagedestroy($image);
}
}
// Получаем все вложения
$args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'posts_per_page' => -1,
);
$attachments = get_posts($args);
foreach ($attachments as $attachment) {
$path = get_attached_file($attachment->ID);
wpconsult_clean_image_metadata($path);
}Такой подход требует опыта работы с WP-CLI и резервного копирования базы и файлов.
Рекомендации по оптимизации изображений в WordPress
Удаление метаданных — только один из этапов оптимизации. Для максимальной производительности рекомендуется:
- Использовать современные форматы изображений WebP;
- Сжимать изображения без потери качества с помощью плагинов оптимизации, например, Clearfy Pro или EWWW Image Optimizer;
- Использовать CDN для доставки изображений;
- Настроить ленивую загрузку (lazy load) для медиафайлов;
- Проверять размер и разрешение изображений перед загрузкой.
Следуя этим рекомендациям вместе с удалением метаданных, вы значительно улучшите скорость загрузки сайта и пользовательский опыт.