get_attached_media( string $type, int|WP_Post $post ): WP_Post[]

Retrieves media attached to the passed post.

Parameters

$typestringrequired
Mime type.
$postint|WP_Postoptional
Post ID or WP_Post object. Default is global $post.

Return

WP_Post[] Array of media attached to the given post.

Source

function get_attached_media( $type, $post = 0 ) {
	$post = get_post( $post );

	if ( ! $post ) {
		return array();
	}

	$args = array(
		'post_parent'    => $post->ID,
		'post_type'      => 'attachment',
		'post_mime_type' => $type,
		'posts_per_page' => -1,
		'orderby'        => 'menu_order',
		'order'          => 'ASC',
	);

	/**
	 * Filters arguments used to retrieve media attached to the given post.
	 *
	 * @since 3.6.0
	 *
	 * @param array   $args Post query arguments.
	 * @param string  $type Mime type of the desired media.
	 * @param WP_Post $post Post object.
	 */
	$args = apply_filters( 'get_attached_media_args', $args, $type, $post );

	$children = get_children( $args );

	/**
	 * Filters the list of media attached to the given post.
	 *
	 * @since 3.6.0
	 *
	 * @param WP_Post[] $children Array of media attached to the given post.
	 * @param string    $type     Mime type of the media desired.
	 * @param WP_Post   $post     Post object.
	 */
	return (array) apply_filters( 'get_attached_media', $children, $type, $post );
}

Hooks

apply_filters( ‘get_attached_media’, WP_Post[] $children, string $type, WP_Post $post )

Filters the list of media attached to the given post.

apply_filters( ‘get_attached_media_args’, array $args, string $type, WP_Post $post )

Filters arguments used to retrieve media attached to the given post.

Changelog

VersionDescription
3.6.0Introduced.

User Contributed Notes

  1. Skip to note 6 content

    Important to note that this function only returns the attachments that were first uploaded/added to the post.

    Uploading an image to Post A(ID 1) and then adding that image later to Post B(ID 2) would give an empty array if the following code was used:


    $media = get_attached_media( 'image', 2 );
    var_dump( $media );

    You’d only get array data if you upload your media and add it to Post B before any other post.

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