wp_update_attachment_metadata()WP 2.1.0

Обновляет метаданные вложения (медиафайла).

Для каждого медиафайла записываются метаданные. Расположены они в таблице wp_postmeta под ключем _wp_attachment_metadata в виде сериализованного массива.

Обновляемые данные - это массив данных о файле. Если вам нужно обновить какой-то конкретный элемент массива, то сначала получите имеющиеся данные с помощью wp_get_attachment_metadata(), измените полученный массив и сохраните данные.

Работает на основе: update_post_meta(), delete_post_meta()
Хуки из функции

Возвращает

int|false. Логический. true если данные были обновлены или false.

Использование

wp_update_attachment_metadata( $post_id, $data );
$post_id(число) (обязательный)
ID медиафайла (вложения), метаданные которого нужно обновить.
$data(массив) (обязательный)
Данные, которые будут записаны взамен имеющихся.

Примеры

0

#1 Обновим подпись картинки

Давайте добавим свои данные к картинке с ID 656. Для этого сначала получим метаданные, изменим их (добавим свои данные) и сохраним:

$attach_id = 656;
// получаем данные
$data = wp_get_attachment_metadata( $attach_id );

// устанавливаем подпись
$data['image_meta']['my_data'] = 'Эта строка данных, которая мне будет нужна';

// обновляем данные
if( wp_update_attachment_metadata( $attach_id, $data ) )
	echo "Обновлено";
else
	echo "Не обновлено";

Здесь при получении данных $data был равен:

Array
(
	[width] => 356
	[height] => 299
	[file] => 2011/05/dinamic-archives.png
	[sizes] => Array
		(
			[thumbnail] => Array
				(
					[file] => dinamic-archives-80x80.png
					[width] => 80
					[height] => 80
					[mime-type] => image/png
				)

			[medium] => Array
				(
					[file] => dinamic-archives-120x100.png
					[width] => 120
					[height] => 100
					[mime-type] => image/png
				)

		)

	[image_meta] => Array
		(
			[aperture] => 0
			[credit] => 
			[camera] => 
			[caption] => 
			[created_timestamp] => 0
			[copyright] => 
			[focal_length] => 0
			[iso] => 0
			[shutter_speed] => 0
			[title] => 
		)

)

Список изменений

С версии 2.1.0 Введена.

Код wp_update_attachment_metadata() WP 6.5.2

function wp_update_attachment_metadata( $attachment_id, $data ) {
	$attachment_id = (int) $attachment_id;

	$post = get_post( $attachment_id );

	if ( ! $post ) {
		return false;
	}

	/**
	 * Filters the updated attachment meta data.
	 *
	 * @since 2.1.0
	 *
	 * @param array $data          Array of updated attachment meta data.
	 * @param int   $attachment_id Attachment post ID.
	 */
	$data = apply_filters( 'wp_update_attachment_metadata', $data, $post->ID );
	if ( $data ) {
		return update_post_meta( $post->ID, '_wp_attachment_metadata', $data );
	} else {
		return delete_post_meta( $post->ID, '_wp_attachment_metadata' );
	}
}