Как удалить все метаданные из изображений WordPress

При работе с изображениями в WordPress нередко возникает необходимость удалить метаданные, такие как EXIF, IPTC и другие, которые могут содержать лишнюю информацию — от технических деталей фотоаппарата до геолокации. Это важно не только для уменьшения размера файла и ускорения загрузки сайта, но и для безопасности и конфиденциальности.

Почему важно удалять метаданные из изображений в WordPress

Метаданные часто включают техническую информацию о камере, дату и время съемки, геотеги и другие данные, которые могут раскрывать лишнюю информацию. Если вы используете фотографии, не хотите разглашать местоположение съемки или просто хотите уменьшить размер файла, удаление метаданных — необходимый шаг.

Кроме того, при SEO-оптимизации сайта уменьшение веса изображений влияет на скорость загрузки страниц, что положительно сказывается на ранжировании в поисковых системах.

Наконец, удаление метаданных предотвращает возможные утечки приватных данных, которые злоумышленники могут использовать.

Как WordPress обрабатывает метаданные изображений

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

Для удаления метаданных можно использовать сторонние плагины, либо реализовать собственное решение на базе фильтров WordPress.

Далее рассмотрим оба варианта — через плагин и через кастомный код.

Удаление метаданных с помощью плагина

Для удаления метаданных есть несколько специализированных плагинов. Вот некоторые из них:

  • Image Cleanup — удаляет метаданные EXIF и IPTC при загрузке.
  • Imsanity — оптимизирует размеры изображений и может удалять метаданные.
  • WP Smush — популярный плагин для оптимизации изображений, умеет удалять метаданные.

Установка простая: в админке перейдите Плагины > Добавить новый, введите название плагина и установите. После активации настройте удаление метаданных в параметрах плагина.

Плагины удобны, но не всегда позволяют гибко контролировать процесс, а также влияют на производительность сайта.

Удаление метаданных программно: пример функции для WordPress

Если нужен более тонкий контроль, можно удалить метаданные программно, используя PHP-библиотеку wp-image-editor и класс Imagick или GD. Рассмотрим пример, как удалить все метаданные из изображения при загрузке.

Добавьте следующий код в файл functions.php темы или в свой плагин:

function wpfreecourses_remove_image_metadata($metadata, $attachment_id) {
    $file = get_attached_file($attachment_id);
    if (!file_exists($file)) {
        return $metadata;
    }

    // Проверяем, поддерживается ли класс Imagick
    if (class_exists('Imagick')) {
        try {
            $image = new Imagick($file);
            $image->stripImage(); // Удаляет все метаданные
            $image->writeImage($file);
            $image->clear();
            $image->destroy();
        } catch (Exception $e) {
            // Ошибка обработки
        }
    } else {
        // Если Imagick недоступен, можно попробовать GD (ограниченные возможности)
        $image_info = getimagesize($file);
        if ($image_info[2] == IMAGETYPE_JPEG) {
            $img = imagecreatefromjpeg($file);
            if ($img) {
                imagejpeg($img, $file, 90); // Перезаписываем без метаданных
                imagedestroy($img);
            }
        }
    }

    return $metadata;
}
add_filter('wp_generate_attachment_metadata', 'wpfreecourses_remove_image_metadata', 10, 2);

Этот код использует фильтр wp_generate_attachment_metadata, который вызывается при загрузке медиафайла. Если на сервере есть Imagick, мы удаляем все метаданные через метод stripImage(). Если нет — пытаемся перезаписать JPEG через GD, что тоже убирает часть метаданных.

Такой подход эффективен и не требует дополнительных плагинов.

Как проверить, что метаданные удалены

После загрузки изображения и применения удаления метаданных важно проверить результат.

Для этого можно использовать онлайн-сервисы, например ExifInfo.org, загрузив туда изображение с сайта. Если метаданные удалены, сервис покажет, что информация отсутствует.

Также можно скачать изображение напрямую с сайта и проверить через свойства файла или использовать программы, например ExifTool в командной строке:

exiftool image.jpg

Команда покажет все метаданные. Если они исчезли, значит, очистка работает корректно.

Дополнительные советы по работе с изображениями в WordPress

Оптимизация изображений

Удаление метаданных помогает уменьшить размер, но дополнительно стоит оптимизировать сами изображения — уменьшать разрешение, использовать современные форматы (WebP), кешировать и CDN.

Автоматизация очистки для уже загруженных изображений

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

function wpfreecourses_clean_existing_images() {
    $args = [
        'post_type' => 'attachment',
        'post_mime_type' => 'image',
        'posts_per_page' => -1
    ];
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $id = get_the_ID();
            wpfreecourses_remove_image_metadata([], $id);
        }
        wp_reset_postdata();
    }
}
// Запускайте эту функцию вручную один раз, например через WP-CLI или временный экшен

Безопасность и бэкапы

Перед массовым удалением метаданных или правкой изображений сделайте резервную копию сайта и базы данных, чтобы избежать потери данных и возможности отката.

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

WooCommerce: автоматическое удаление неактивных заказов по срокам
04.06.2026
WooCommerce: автоматическое удаление неактивных заказов
29.05.2026
WooCommerce: как автоматически создавать купоны при оформлении заказа
19.06.2026
Как создать настройки плагина WordPress с использованием Options API
01.11.2025
Как создать собственный виджет в WordPress: подробное руководство с примерами кода
18.11.2025