Получение прикрепленных медиафайлов в WordPress
Функция get_attached_media() позволяет получать медиафайлы, прикрепленные к указанному посту. Эта функция может быть полезна, когда вам нужно извлечь изображения, видеоролики или другие типы медиа, загруженные вместе с контентом.
Использование функции
Синтаксис
$media = get_attached_media($type, $post);
- $type (string) (обязательный параметр) — тип медиафайла. Например, 'image' для изображений.
- $post (int|WP_Post) (обязательный параметр) — ID поста или объект поста
WP_Post. По умолчанию используется текущий пост.
Возвращаемое значение
Функция возвращает массив объектов WP_Post, где каждый объект представляет собой прикрепленный медиафайл.
Примеры использования
Пример 1: Получение прикрепленных изображений к текущему посту
Предположим, у вас есть пост с 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_title] => ajax in WordPress
...
[guid] => http://ваш-сайт.com/wp-content/uploads/2013/01/ajax-in-wp.jpg
...
)
...
)
Пример 2: Получение первого изображения, прикрепленного к посту
Если вам нужно извлечь только первое изображение, прикрепленное к посту, вы можете использовать следующую конструкцию:
$media = get_attached_media('image', 2018);
$first_image = array_shift($media);
// Ссылка на изображение
$image_url = $first_image->guid;
// Отобразить изображение на странице
echo '
';
Пример 3: Получение всех прикрепленных файлов
Если вы хотите получить все типы медиафайлов, прикрепленные к посту, не указывая конкретный тип, просто передайте пустую строку в качестве первого параметра:
$media = get_attached_media('');
Также можно указать ID поста:
$media = get_attached_media('', 102);
Изменения в функции
Функция get_attached_media() была представлена в версии 3.6.0 WordPress.
Код функции
Вот как выглядит реализация функции get_attached_media():
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',
);
$args = apply_filters('get_attached_media_args', $args, $type, $post);
$children = get_children($args);
return (array) apply_filters('get_attached_media', $children, $type, $post);
}
Заключение
Используя функцию get_attached_media(), вы легко можете управлять медиафайлами, прикрепленными к вашим постам в WordPress. Это полезный инструмент для разработчиков и владельцев сайтов, которые хотят улучшить свой контент с помощью визуальных или аудиоматериалов.