wp_update_attachment_metadata() WP 2.1.0

Оновлює метадані вкладення (медіафайл).

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

Оновлені дані – це масив даних про файл. Якщо вам потрібно оновити якийсь конкретний елемент масиву, спочатку отримаєте наявні дані за допомогою wp_get_attachment_metadata() , змініть отриманий масив і збережіть дані.

Працює на основі:
update_post_meta() ,
delete_post_meta()

Хуки з функції
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] =>
			 =>
			[created_timestamp] => 0
			[copyright] =>
			[focal_length] => 0
			[iso] => 0
			[shutter_speed] => 0
			[title] =>
		)

)

список змін

З версії 2.1.0Введено.

Код wp_update_attachment_metadata() WP 6.0.2

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

	$post = get_post($attachment_id);

	if (! $post) {
		return false;
	}

	/**
	 * Filters 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' );
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *