В работе с WordPress часто возникает необходимость изменить или удалить метаданные медиафайлов — будь то изображения, видео или аудиозаписи. Метаданные включают такие данные, как заголовок, описание, альт-текст, ключевые слова и другую информацию, которая хранится в базе данных и влияет на отображение и SEO.
Что такое метаданные медиафайлов и зачем их менять?
Метаданные — это информация, связанная с медиафайлом, которая помогает управлять контентом, описывать его и улучшать поисковую оптимизацию сайта. Например, alt-текст для изображений помогает поисковым системам лучше понимать содержание страницы и улучшает доступность для пользователей с ограничениями.
Иногда требуется массово изменить метаданные, например, после импорта большого количества файлов, или удалить устаревшую информацию, чтобы очистить базу. Плагины могут помочь, но иногда удобнее и быстрее использовать собственные скрипты, особенно если нужна тонкая кастомизация.
Как хранится метаданные медиафайлов в WordPress
В WordPress медиафайлы — это записи типа attachment в таблице wp_posts. Основные метаданные хранятся в postmeta, а также в специальных полях самого поста.
Вот основные места хранения метаданных:
post_title— заголовок файла;post_excerpt— описание (caption);post_content— полное описание;- Таблица
wp_postmeta— дополнительные данные, например,_wp_attachment_image_altдля alt-текста; - Метаданные файла, хранящиеся в таблице
wp_postmetaс ключом_wp_attachment_metadata, где содержатся размеры изображений, ориентация, и др.
Удаление метаданных через код — пример функции wp-bloger
Для удаления или изменения метаданных можно написать кастомную функцию. Ниже пример функции wpbloger_remove_attachment_metadata, которая удаляет alt-текст и описание выбранного медиафайла по ID.
function wpbloger_remove_attachment_metadata($attachment_id) {
if (!current_user_can('edit_post', $attachment_id)) {
return false; // Проверка прав
}
// Удаляем alt-текст
delete_post_meta($attachment_id, '_wp_attachment_image_alt');
// Очищаем описание (excerpt)
wp_update_post(array(
'ID' => $attachment_id,
'post_excerpt' => '',
'post_content' => '',
'post_title' => '', // при необходимости
));
return true;
}Эту функцию можно вызвать в админке, например, через AJAX, или в консоли WP-CLI для массовой очистки.
Пример массового удаления alt-текста для всех изображений
$attachments = get_posts(array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'numberposts' => -1,
));
foreach ($attachments as $attachment) {
wpbloger_remove_attachment_metadata($attachment->ID);
}Изменение метаданных — пример замены alt-текста по шаблону
Для массового обновления alt-текста можно использовать функцию, которая изменяет или добавляет alt с шаблоном, например, "Изображение №ID".
function wpbloger_update_alt_text($attachment_id, $alt_text) {
if (!current_user_can('edit_post', $attachment_id)) {
return false;
}
update_post_meta($attachment_id, '_wp_attachment_image_alt', sanitize_text_field($alt_text));
return true;
}
$attachments = get_posts(array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'numberposts' => -1,
));
foreach ($attachments as $attachment) {
$alt = 'Изображение №' . $attachment->ID;
wpbloger_update_alt_text($attachment->ID, $alt);
}Практические советы и рекомендации
1. Перед массовыми изменениями всегда делайте резервную копию базы данных.
2. Используйте WP-CLI для запуска скриптов, чтобы не загружать сайт через фронтенд.
3. Если нужно изменить метаданные, которые хранятся в сериализованных массивах (например, _wp_attachment_metadata), аккуратно разбирайте и собирайте их обратно с помощью maybe_unserialize и maybe_serialize.
4. Для удобства можно создать админ-страницу с формой и AJAX-обработчиком для работы с метаданными без захода в базу напрямую.
Полезные плагины для работы с медиа и их метаданными
Хотя статья посвящена решению без плагинов, иногда удобнее использовать готовые решения. Например:
- Media Library Assistant — мощный инструмент для управления медиафайлами и их метаданными.
- Enable Media Replace — позволяет заменять файлы и обновлять метаданные.
Заключение
Изменение и удаление метаданных медиафайлов без плагинов — вполне выполнимая задача с помощью кастомного кода. Это дает полный контроль над процессом и позволяет автоматизировать операции под свои нужды. Главное — аккуратность и тестирование на копии сайта.