Работа с метаданными медиафайлов в WordPress — задача, с которой часто сталкиваются разработчики и администраторы сайтов. Метаданные (например, дата создания, автор, заголовок, описание) влияют на SEO, удобство поиска и организацию медиа-библиотеки. В этой статье разберём, как удалить или изменить метаданные медиафайлов без использования плагинов, используя стандартные функции WordPress и PHP. Это особенно полезно, если вы хотите избежать лишних плагинов и сделать кастомные доработки.
Что такое метаданные медиафайлов в WordPress и где они хранятся
В WordPress медиафайлы — это записи типа attachment в базе данных. Метаданные хранятся в двух основных местах:
- В таблице
wp_posts— базовая информация (заголовок, описание, имя файла). - В таблице
wp_postmeta— дополнительные данные, включая технические параметры (размер, ориентация, EXIF и т. д.).
Некоторые метаданные автоматически генерируются при загрузке (например, размеры картинок), другие можно редактировать вручную.
Как получить и изменить метаданные медиафайла через код
Получение метаданных медиафайла
Для начала нужно получить ID медиафайла. Допустим, у нас есть ID — $attachment_id. Чтобы получить метаданные, используем функцию WordPress:
$wpbloger_attachment_meta = wp_get_attachment_metadata($attachment_id);
Эта функция возвращает массив с техническими параметрами, такими как размеры изображений, ориентация, размеры файла и прочее.
Для получения заголовка и описания используйте:
$wpbloger_title = get_the_title($attachment_id);
$wpbloger_description = get_post_field('post_content', $attachment_id);
Изменение заголовка, описания и других основных данных
Чтобы изменить заголовок и описание, используйте функцию wp_update_post():
$wpbloger_update = array(
'ID' => $attachment_id,
'post_title' => 'Новый заголовок файла',
'post_content' => 'Новое описание медиафайла'
);
wp_update_post($wpbloger_update);
Эти изменения сразу отразятся в админке и на сайте.
Удаление или изменение метаданных в wp_postmeta
Чтобы работать с дополнительными метаданными, например, удалить поле или изменить значение, используйте функции update_post_meta(), delete_post_meta() и get_post_meta().
Пример удаления метаданных:
delete_post_meta($attachment_id, '_wp_attachment_image_alt'); // Удаляет alt текст
Изменение или добавление нового значения:
update_post_meta($attachment_id, '_wp_attachment_image_alt', 'Описание для alt');
Пример функции для массового удаления метаданных alt у изображений
Иногда нужно очистить alt-теги у всех изображений в библиотеке. Вот пример функции, которую можно добавить в файл functions.php темы или в отдельный плагин:
function wpbloger_clear_all_alt_texts() {
$args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'posts_per_page' => -1,
'fields' => 'ids',
);
$attachments = get_posts($args);
foreach ($attachments as $attachment_id) {
delete_post_meta($attachment_id, '_wp_attachment_image_alt');
}
}
// Запустить функцию один раз
// wpbloger_clear_all_alt_texts();
Внимание: вызовите функцию один раз, затем закомментируйте или удалите вызов, чтобы избежать повторного выполнения.
Как работать с EXIF метаданными изображений
EXIF — это технические данные, встроенные в фотофайлы (например, дата съёмки, модель камеры). WordPress при загрузке может сохранять часть EXIF в метаданных. Чтобы получить оригинальные EXIF данные, используйте PHP функцию exif_read_data():
function wpbloger_get_exif_data($file_path) {
if (function_exists('exif_read_data')) {
$exif = @exif_read_data($file_path);
if ($exif !== false) {
return $exif;
}
}
return false;
}
Чтобы получить путь к файлу медиа, используйте:
$file_path = get_attached_file($attachment_id);
Пример использования:
$exif_data = wpbloger_get_exif_data($file_path);
if ($exif_data) {
echo 'Дата съёмки: ' . ($exif_data['DateTime'] ?? 'не указана');
}
Если нужно удалить EXIF данные из файла, это сложнее — придется перезаписать файл без метаданных, например, через GD или Imagick, что выходит за рамки этой статьи.
Полезные плагины для работы с метаданными
Хотя мы рассматриваем работу без плагинов, иногда удобнее и безопаснее использовать проверенные инструменты. Вот несколько полезных плагинов:
- Clearfy Pro — оптимизация сайта, включая управление метаданными.
- WPRemark — улучшение работы с медиа и комментариями.
Используйте плагины, если вам нужно быстро и без кода решить задачу.
Советы по безопасности и производительности
При работе с метаданными через код важно помнить:
- Всегда делайте резервную копию базы данных перед массовыми изменениями.
- Тестируйте функции на локальном или тестовом сайте, чтобы избежать потери данных.
- Избегайте лишних запросов в циклах — используйте
get_postsс нужными параметрами. - Не храните чувствительные данные в метаданных без шифрования.
Заключение
Удалять или изменять метаданные медиафайлов в WordPress можно довольно просто, используя встроенные функции без плагинов. Это даёт гибкость и контроль над данными, помогает оптимизировать сайт и обеспечить правильную организацию медиа. В статье приведены примеры кода для получения, изменения и удаления метаданных, а также советы по работе с EXIF и полезные плагины для альтернативных решений.