Вопрос или проблема
Я пытаюсь программно обновить некоторые метаданные аудиофайла, прикрепленного к посту. Мне удалось обновить свойства исполнителя и альбома аудиофайла, но название не сохраняется. Я могу зайти в медиатеку и отредактировать название, и это работает, но не через backend. Можете ли вы помочь? Вот как я это делаю сейчас:
$meta = wp_get_attachment_metadata( $attachment->ID, false);
$meta = array (
'artist' => $mainArtist,
'title' => $TitleAndFeaturedArtist,
'album' => ' ',
);
wp_update_attachment_metadata( $attachment->ID, $meta);
Исполнитель и альбом обновляются, но название нет. Название, похоже, берется из тега iD3, но через медиатеку в WordPress вы можете редактировать и устанавливать свое. Я пытаюсь избежать ручной обработки более 2000 файлов. Должен же быть способ 🙁
Пожалуйста, помогите. Любые советы или альтернативы будут полезны.
Я разобрался в этом. Дело в том, что название на самом деле не является частью метаданных вложения. Сам аудиофайл хранится в базе данных как пост с типом поста “attachment” и соответствующим MIME-типом. Чтобы обновить название аудиофайла, нужно обновить заголовок поста.
Ответ или решение
Чтобы обновить заголовок аудиофайла через его метаданные вложения в WordPress, важно понимать, что заголовок файла на самом деле не является частью метаданных вложения. Вместо этого аудио-вложение хранится в базе данных как запись с типом поста "attachment" и соответствующим MIME-типом. Поэтому, чтобы обновить заголовок аудиофайла, вам необходимо изменить заголовок поста, связанного с этим вложением.
Вот пошаговая инструкция, как это сделать:
-
Получите ID вложения. Обычно это можно сделать, если у вас уже имеется объект вложения, как в вашем коде.
-
Измените заголовок поста. Для этого вам нужно использовать функцию
wp_update_post()
, чтобы обновить заголовок, связанный с указанным ID вложения.
Пример кода может выглядеть так:
// Получаем ID вложения
$attachment_id = $attachment->ID;
// Обновляем заголовок поста
$updated_post = array(
'ID' => $attachment_id,
'post_title' => $TitleAndFeaturedArtist, // Заголовок, который вы хотите установить
);
// Обновляем пост
wp_update_post($updated_post);
-
Проверка обновления. После того как вы выполните обновление, вы можете проверить, изменился ли заголовок, используя
get_post()
. -
Обработка множества файлов. Если вам нужно обновить заголовки для большого количества аудиофайлов (например, более 2000), вы можете создать цикл, который будет обрабатывать все необходимые ID вложений. Например:
// Получение всех ID вложений
$attachments = get_posts(array(
'post_type' => 'attachment',
'post_mime_type' => 'audio',
'numberposts' => -1,
));
foreach ($attachments as $attachment) {
// Здесь вы можете задать логику определения заголовка
$new_title = "Ваш заголовок для " . $attachment->post_name; // Пример создания нового заголовка
// Обновляем заголовок
$updated_post = array(
'ID' => $attachment->ID,
'post_title' => $new_title,
);
wp_update_post($updated_post);
}
- Проверка результата. После выполнения скрипта убедитесь, что все заголовки обновились корректно, проверив через медиа-библиотеку или используя соответствующий запрос в базе данных.
С помощью вышеизложенного подхода вы сможете эффективно и быстро обновить заголовки ваших аудиофайлов, избегая ручной обработки каждого из них. Это поможет вам значительно ускорить рабочий процесс и сохранить ваше время.