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

get_attached_media()WP 3.6.0

Получает вложения (картинки, видео, аудио) прикрепленные к записи (посту). Получает объекты данных в виде массива.

Эта функция возвращает только те вложения, которые были загружены для поста (которые прикреплены к посту).

Например, мы загрузили картинку в пост A (ID 1), а затем добавили эту картинку в контент поста B (ID 2). Тогда, следующий код выдаст пустой массив:

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

Объекты WP_Post в массиве который вернет функция будут упорядочены по убыванию (ASC) по полю menu_order.

Работает на основе: get_children()
Хуки из функции

Возвращает

WP_Post[]. Массив объектов, найденных вложений или пустой массив: array()

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

$attach = get_attached_media( $type, $post );
$type(cтрока) (обязательный)
Тип вложений, которые нужно получить. Например: 'image', 'audio', 'video', 'video/mp4'.
$post(число/WP_Post)
ID записи вложения которой нужно получить.
По умолчанию: текущий пост

Примеры

1

#1 Получим вложения поста любого типа

Можно получить все прикрепленные вложения поста, независимо от типа. Для этого в первом параметру нужно указать пустую строку:

$media = get_attached_media( '' );

// или

$media = get_attached_media( '', 102 );
0

#2 Получим вложения-картинки текущего поста

В этом примере мы получим данные картинок прилепленных к записи с ID=2018:

$media = get_attached_media( 'image', 2018 );
print_r( $media );

Этот код выведет на экран что-то такое:

Array
(
	[2024] => WP_Post Object
		(
			[ID] => 2024
			[post_author] => 1
			[post_date] => 2013-01-09 19:46:33
			[post_date_gmt] => 2013-01-09 15:46:33
			[post_content] => 
			[post_title] => ajax в WordPress
			[post_excerpt] => 
			[post_status] => inherit
			[comment_status] => open
			[ping_status] => open
			[post_password] => 
			[post_name] => ajax-in-wp
			[to_ping] => 
			[pinged] => 
			[post_modified] => 2013-01-09 19:46:33
			[post_modified_gmt] => 2013-01-09 15:46:33
			[post_content_filtered] => 
			[post_parent] => 2018
			[guid] => http://wp-kama.ru/wp-content/uploads/2013/01/ajax-in-wp.jpg
			[menu_order] => 0
			[post_type] => attachment
			[post_mime_type] => image/jpeg
			[comment_count] => 0
			[filter] => raw
		)
	[2000] => WP_Post Object
		(
			[ID] => 2024
			...
		)
)
0

#3 Получим первую картинку-вложение прикрепленную к записи

Этот код показывает, как получить первую картинку, которая прикреплена к посту с ID = 2018:

$media = get_attached_media( 'image', 2018 );
$media = array_shift( $media );

// ссылка на картинку
$image_url = $media->guid;

// выведем картинку в браузере
echo '<img src="'. $image_url .'" />';

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

С версии 3.6.0 Введена.

Код get_attached_media() WP 6.4.3

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 );
}
22 комментария
Полезные 1 Все
    Войти