Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

wp_get_attachment_metadata()WP 2.1.0

Получает метаданные прикрепленного файла (вложения).

Работает на основе: get_post_meta()
1 раз — 0.000745 сек (медленно) | 50000 раз — 1.22 сек (быстро) | PHP 7.0.8, WP 4.6
Хуки из функции

Возвращает

array|false. Массив метаданных указанного прикрепленного файла. Если данные получить не удалось, то будет возвращено false.

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

$meta = wp_get_attachment_metadata( $attachment_id, $unfiltered );
$attachment_id(число) (обязательный)
ID вложения, метаданные которого нужно получить.
$unfiltered(логический)
Если поменять на true, то будет отключена работа фильтров.
По умолчанию: false

Примеры

#1 Получим метаданные вложения 656 (картинка):

$array = wp_get_attachment_metadata( 656 );

В результате переменная $array будет содержать примерно следующие данные (зависит от типа вложения):

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

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

		]

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

]

Выведем разрешения картинки:

$meta = wp_get_attachment_metadata( 656 );

if( $meta ){
	echo $meta['width'] .'x'. $meta['height']; //> 356х299
}

#2 Метаданные SVG файла

$meta = wp_get_attachment_metadata( $attach_id );

/*
array (
	[filesize] => 98765487
)
*/

#3 Получим метаданные вложения 95 (видео):

$array = wp_get_attachment_metadata( 95 );

В результате переменная $array будет содержать примерно следующие данные (зависит от типа вложения):

[
	[filesize] => 61429114
	[mime_type] => video/mp4
	[length] => 1375
	[length_formatted] => 22:55
	[width] => 1280
	[height] => 720
	[fileformat] => mp4
	[dataformat] => quicktime
	[audio] => [
			[dataformat] => mp4
			[codec] => ISO/IEC 14496-3 AAC
			[sample_rate] => 44100
			[channels] => 2
			[bits_per_sample] => 16
			[lossless] =>
			[channelmode] => stereo
		]

	[created_timestamp] => 1538981268
]

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

С версии 2.1.0 Введена.
С версии 6.0.0 The $filesize value was added to the returned array.
С версии 7.1.0 false is now returned if the metadata is not an array, and when the result is filtered the sizes key is always an array when present.

Код wp_get_attachment_metadata() WP 7.1

function wp_get_attachment_metadata( $attachment_id = 0, $unfiltered = false ) {
	$attachment_id = (int) $attachment_id;

	if ( ! $attachment_id ) {
		$post = get_post();

		if ( ! $post ) {
			return false;
		}

		$attachment_id = $post->ID;
	}

	$data = get_post_meta( $attachment_id, '_wp_attachment_metadata', true );

	if ( ! is_array( $data ) || ! $data ) {
		return false;
	}

	if ( $unfiltered ) {
		return $data;
	}

	/**
	 * Filters the attachment meta data.
	 *
	 * @since 2.1.0
	 *
	 * @param array $data          Array of meta data for the given attachment.
	 * @param int   $attachment_id Attachment post ID.
	 */
	$data = apply_filters( 'wp_get_attachment_metadata', $data, $attachment_id );

	if ( ! is_array( $data ) ) {
		return false;
	}

	if ( array_key_exists( 'sizes', $data ) && ! is_array( $data['sizes'] ) ) {
		$data['sizes'] = array();
	}

	return $data;
}
9 комментариев