wp_get_attachment_metadata( int $attachment_id, bool $unfiltered = false ): array|false

Retrieves attachment metadata for attachment ID.

Parameters

$attachment_idintrequired
Attachment post ID. Defaults to global $post.
$unfilteredbooloptional
If true, filters are not run.

Default:false

Return

array|false Attachment metadata. False on failure.
  • width int
    The width of the attachment.
  • height int
    The height of the attachment.
  • file string
    The file path relative to wp-content/uploads.
  • sizes array
    Keys are size slugs, each value is an array containing 'file', 'width', 'height', and 'mime-type'.
  • image_meta array
    Image metadata.
  • filesize int
    File size of the attachment.

Source

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;
}

Hooks

apply_filters( ‘wp_get_attachment_metadata’, array $data, int $attachment_id )

Filters the attachment meta data.

Changelog

VersionDescription
7.1.0false 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.
6.0.0The $filesize value was added to the returned array.
2.1.0Introduced.

User Contributed Notes

  1. Skip to note 5 content

    Example return value

    Array
    (
    	[width] => 2400
    	[height] => 1559
    	[file] => 2011/12/press_image.jpg
    	[sizes] => Array
    	(
    		[thumbnail] => Array
    		(
    			[file] => press_image-150x150.jpg
    			[width] => 150
    			[height] => 150
    			[mime-type] => image/jpeg
    		)
    		 => Array
    		(
    			[file] => press_image-4-300x194.jpg
    			[width] => 300
    			[height] => 194
    			[mime-type] => image/jpeg
    		)
    		[large] => Array
    		(
    			[file] => press_image-1024x665.jpg
    			[width] => 1024
    			[height] => 665
    			[mime-type] => image/jpeg
    		)
    		[post-thumbnail] => Array
    		(
    			[file] => press_image-624x405.jpg
    			[width] => 624
    			[height] => 405
    			[mime-type] => image/jpeg
    		)
    	)
    	[image_meta] => Array
    	(
    		[aperture] => 5
    		[credit] => 
    		[camera] => Canon EOS-1Ds Mark III
    		 => 
    		[created_timestamp] => 1323190643
    		[copyright] => 
    		[focal_length] => 35
    		[iso] => 800
    		[shutter_speed] => 0.016666666666667
    		[title] => 
    	)
    )
  2. Skip to note 7 content
    Anonymous User

    Example for video format:

    array(10) {
    	["filesize"] => int(227431276)
    	["mime_type"] => string(9) "video/mp4"
    	["length"] => int(918)
    	["length_formatted"] => string(5) "15:18"
    	["width"] => int(1280)
    	["height"] => int(720)
    	["fileformat"] => string(3) "mp4"
    	["dataformat"] => string(9) "quicktime"
    	["audio"] => array(7) {
    		["dataformat"] => string(3) "mp4"
    		["codec"] => string(19) "ISO/IEC 14496-3 AAC"
    		["sample_rate"] => float(44100)
    		["channels"] => int(2)
    		["bits_per_sample"] => int(16)
    		["lossless"] => bool(false)
    		["channelmode"] => string(6) "stereo"
    	}
    	["created_timestamp"]=> int(-2082844800)
    }

You must log in before being able to contribute a note or feedback.