Функция get_attached_media()
в WordPress используется для извлечения медиафайлов, прикреплённых к конкретному посту. Она может возвращать изображения, аудиофайлы, видео и другие типы вложений, что делает её очень полезной для работы с медиабиблиотекой.
get_attached_media( string $type, int|WP_Post $post ): WP_Post[]
Описание
Эта функция возвращает массив объектов WP_Post
, представляющих медиафайлы, прикреплённые к указанному посту. Обратите внимание, что функция извлекает только те вложения, которые были загружены непосредственно для данного поста. Если вы, например, загрузите изображение для одного поста, а затем добавите его к другому, функция не вернёт это изображение для второго поста.
Параметры
- $type (string, обязательный): MIME-тип медиафайлов, которые вы хотите получить (например,
'image'
,'audio'
,'video'
и т. д.). - $post (int|WP_Post, необязательный): ID поста или объект
WP_Post
. По умолчанию используется глобальный$post
.
Возврат
- Возвращает массив
WP_Post[]
: массив объектов, представляющих медиафайлы, прикреплённые к заданному посту, или пустой массив, если таких вложений нет.
Пример 1: Получение всех прикреплённых медиафайлов текущего поста
Чтобы получить все медиафайлы, прикреплённые к текущему посту, можно передать пустую строку в качестве первого параметра:
$media = get_attached_media('');
// Или для конкретного поста, например, с ID 105
$media_for_post_105 = get_attached_media('', 105);
// Выводим информацию о вложениях
print_r($media_for_post_105);
Пример 2: Получение аудиовложений для конкретного поста
В этом примере мы получим аудиофайлы, прикреплённые к посту с ID 302:
$media = get_attached_media('audio', 302);
// Выводим массив медиафайлов
print_r($media);
Пример 3: Получение изображений, прикреплённых к посту
Давайте извлечем все изображения, прикреплённые к посту с ID 2045:
$media = get_attached_media('image', 2045);
// Выводим полученные изображения
foreach ($media as $image) {
echo '<img src="' . esc_url($image->guid) . '" alt="' . esc_attr($image->post_title) . '" />';
}
Пример 4: Получение первой картинки-вложения
Иногда может быть нужно получить только первую картинку, прикреплённую к посту. Вот как это сделать:
$media = get_attached_media('image', 2045);
$first_image = array_shift($media); // Получаем первую картинку
if ($first_image) {
$image_url = esc_url($first_image->guid);
echo '<img src="' . $image_url . '" alt="' . esc_attr($first_image->post_title) . '" />';
} else {
echo 'Нет прикреплённых изображений.';
}
Важные замечания
- Функция возвращает только те вложения, которые были загружены непосредственно к посту. Если медиафайл был добавлен в содержимое другого поста, он не будет возвращён.
- Все объекты
WP_Post
, возвращаемые этой функцией, будут упорядочены по возрастанию значения поляmenu_order
, если оно было установлено для вложений.
Заключение
Функция get_attached_media()
является мощным инструментом для работы с медиафайлами в WordPress, позволяя разработчикам легко извлекать и отображать вложенные файлы. Она проста в использовании и может адаптироваться под различные сценарии, что делает её незаменимой для управления контентом в WordPress.