WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

wp_update_attachment_metadata() WP 2.1.0

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

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

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

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

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

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

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

Примеры

#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] => 
			 => 
			[created_timestamp] => 0
			[copyright] => 
			[focal_length] => 0
			[iso] => 0
			[shutter_speed] => 0
			[title] => 
		)

)

Код wp update attachment metadata: wp-includes/post.php WP 4.8.1

<?php
function wp_update_attachment_metadata( $post_id, $data ) {
	$post_id = (int) $post_id;
	if ( !$post = get_post( $post_id ) )
		return false;

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

Cвязанные функции

Из раздела: Метаданные (postmeta)

wp_update_attachment_metadata Комментариев нет

Здравствуйте, !

Ваш комментарий