Как удалить метаданные из медиатеки WordPress: практическое руководство

Что такое метаданные в медиатеке WordPress и зачем их удалять

Медиатека WordPress хранит не только изображения и файлы, но и множество метаданных, которые описывают эти файлы. Метаданные включают в себя информацию о названии, описании, альтернативном тексте (alt), EXIF-данные фотографий, а также пользовательские поля. Со временем эти данные могут накапливаться и занимать лишнее место в базе данных, а иногда содержать устаревшую или неправильную информацию.

Удаление или очистка метаданных помогает оптимизировать работу сайта, ускорить загрузку страниц, а также повысить безопасность, если в метаданных содержится конфиденциальная информация (например, GPS-координаты из EXIF).

В этой статье мы рассмотрим, как эффективно удалить или очистить метаданные в медиатеке WordPress через код и с помощью плагинов.

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

Для удаления метаданных в WordPress используются функции для работы с постмета — так как медиафайлы в WordPress — это тип записи attachment, их метаданные хранятся в таблице wp_postmeta.

Рассмотрим пример функции для удаления определённого метаполя у всех вложений в медиатеке. Например, удалим пользовательское поле _wp_attachment_image_alt — альтернативный текст для изображения.

function wptool_remove_attachment_meta_alt() {
    $attachments = get_posts([
        'post_type'   => 'attachment',
        'numberposts' => -1,
        'post_status' => 'any',
    ]);

    foreach ( $attachments as $attachment ) {
        delete_post_meta( $attachment->ID, '_wp_attachment_image_alt' );
    }
}
// Запускаем функцию один раз
// wptool_remove_attachment_meta_alt();

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

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

Удаление EXIF-метаданных из загружаемых изображений

Очень часто в метаданных изображений есть EXIF-информация, которая содержит данные о камере, дате съёмки и даже геолокации. Чтобы удалять эти данные автоматически при загрузке, можно использовать хук wp_handle_upload_prefilter и библиотеку PHP imagick или GD.

Вот пример функции, удаляющей EXIF из JPEG при загрузке:

function wptool_strip_exif_on_upload( $file ) {
    if ( isset( $file['tmp_name'] ) && function_exists('exif_read_data') ) {
        $mime = mime_content_type( $file['tmp_name'] );
        if ( $mime === 'image/jpeg' ) {
            $image = imagecreatefromjpeg( $file['tmp_name'] );
            if ( $image ) {
                imagejpeg( $image, $file['tmp_name'], 100 );
                imagedestroy( $image );
            }
        }
    }
    return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'wptool_strip_exif_on_upload' );

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

Плагины для работы с метаданными медиатеки

Если вы не хотите писать код, можно использовать готовые плагины для управления метаданными медиатеки:

  • Media Cleaner — удаляет неиспользуемые файлы и связанные с ними метаданные.
  • Imsanity — автоматически сжимает и оптимизирует изображения, включая удаление EXIF.
  • WP-Optimize — оптимизирует базу данных, удаляя лишние метаданные и ревизии.

Эти плагины помогут очистить медиатеку и базу данных без необходимости писать код.

Оптимизация базы данных: удаление устаревших метаданных

В базе данных WordPress метаданные хранятся в таблице wp_postmeta. Со временем там может накапливаться много лишних записей, например, оставшихся после удаления плагинов или тем.

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

function wptool_cleanup_orphan_attachment_meta() {
    global $wpdb;
    $wpdb->query( "DELETE pm FROM {$wpdb->postmeta} pm
        LEFT JOIN {$wpdb->posts} p ON pm.post_id = p.ID
        WHERE p.ID IS NULL
        AND pm.post_id NOT IN (SELECT ID FROM {$wpdb->posts} WHERE post_type='attachment')" );
}
// wptool_cleanup_orphan_attachment_meta();

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

Рекомендации по безопасности и резервному копированию

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

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

Используйте хук add_action('admin_init', 'wptool_remove_attachment_meta_alt') с осторожностью, чтобы функция запускалась только один раз.

Итог

Удаление метаданных из медиатеки WordPress — важный этап оптимизации сайта, который помогает уменьшить размер базы данных, повысить скорость и безопасность. Для этого можно использовать как готовые плагины, так и кастомный код, который позволяет гибко управлять данными. Внимательное тестирование и резервное копирование — обязательные условия успешной работы с метаданными.

Как создать автоматические уведомления в WordPress с помощью хуков и AJAX
10.03.2026
Как создать свой плагин в WordPress с назначением и примерами кода
16.11.2025
Как создать автоматические отчёты в WordPress с помощью PHP и WPRemark
29.12.2025
Как создать динамическое отображение товара WooCommerce по параметрам
09.01.2026
Как автоматизировать удаление неиспользуемых медиафайлов в WordPress
28.02.2026