Как получить все изображения из медиа-галереи?

10 мар. 2011 г., 13:32:12
Просмотры: 103K
Голосов: 34

Существует ли способ получить URL-адреса ВСЕХ изображений из медиа-галереи?

Я думаю, это был бы простой способ создать на сайте страницу с изображениями, которая просто извлекает все изображения из медиа-галереи, хотя это может быть необходимо только в определенных сценариях.

Мне не нужны инструкции по созданию страницы с изображениями, только способ получить все URL-адреса изображений. Спасибо!

1
Комментарии

Вы имеете в виду все изображения во всей Медиатеке (то есть по всему сайту)?

ZaMoose ZaMoose
12 мар. 2011 г. 17:44:39
Все ответы на вопрос 6
11
72
$query_images_args = array(
    'post_type'      => 'attachment',
    'post_mime_type' => 'image',
    'post_status'    => 'inherit',
    'posts_per_page' => - 1,
);

$query_images = new WP_Query( $query_images_args );

$images = array();
foreach ( $query_images->posts as $image ) {
    $images[] = wp_get_attachment_url( $image->ID );
}

Все URL изображений теперь находятся в переменной $images;

13 мар. 2011 г. 00:16:39
Комментарии

Хм.. похоже, @somatic опередил меня. В отличие от его решения выше, мой вариант будет получать только изображения.

Azizur Rahman Azizur Rahman
13 мар. 2011 г. 00:19:01

Очевидно, наши методы похожи... и azizur прав, добавление 'post_mime_type' в любой запрос позволит ограничить типы возвращаемых файлов.

Важно учесть: guid часто содержит полный URL изображения, но это ненадёжный источник. Он статичен, генерируется только один раз при создании записи и строится на основе текущего URL сайта и структуры папок медиафайлов. Но эта структура папок и домен могут измениться со временем, и тогда guid больше не будет соответствовать реальному URL изображения, а останется лишь записью того, каким он был при создании...

somatic somatic
13 мар. 2011 г. 05:43:50

Этот ответ НЕВЕРНЫЙ. Он не получает изображения из Медиатеки. Он находит только изображения, используемые внутри записей. Неиспользуемые изображения не будут найдены!

Christian Christian
10 окт. 2011 г. 15:38:15

@Christian - это неправильно? Или мне стоит спросить 'всё ещё' неправильно? Я понимаю, что комментирую почти через 2 года, но я попробовал это на WP 3.6 и получаю изображения, которые только что добавил в медиатеку, не прикрепляя их к каким-либо записям :/

Chris Kempen Chris Kempen
16 авг. 2013 г. 20:19:03

Возможно, глупый вопрос, но как теперь получить разные размеры изображений?

Frederik Witte Frederik Witte
17 июл. 2016 г. 17:31:33

@FrederikWitte вы можете комбинировать get_intermediate_image_sizes и wp_get_attachment_image_src, чтобы получить все URL-адреса.

Azizur Rahman Azizur Rahman
18 июл. 2016 г. 02:19:14

урааааааааааааааааа

Zach Smith Zach Smith
22 февр. 2018 г. 05:43:26

Немного контекста - этот ответ НЕ ОШИБОЧНЫЙ. WordPress хранит данные загрузок в таблице wp_posts как пользовательский тип записи attachment каждый раз, когда вы что-то загружаете, независимо от того, используется это где-то или нет.

Matt Royal Matt Royal
27 февр. 2021 г. 16:53:37

Просто интересно, каково назначение post_status? Мой код работает только если я устанавливаю post_status в inherit. Однако вложение, которое я ищу (в моем случае PDF-файл), не было загружено ни на одну страницу. От чего тогда оно наследуется? И почему я не могу просто игнорировать post_status?

A.Shoman A.Shoman
14 апр. 2021 г. 13:58:27

Не работает у меня... Я использую этот рабочий код:

Как показать все медиа-изображения WordPress на странице https://www.arnlweb.com/forums/web-development/how-to-get-all-images-in-a-wordpress-page-from-media-gallery/

Apurba Pathak Apurba Pathak
8 апр. 2023 г. 15:10:55

@ApurbaPathak, я бы не рекомендовал устанавливать плагины, подобные тому, что предложен по вашей ссылке. Это может привести к уязвимостям в безопасности вашей установки WordPress.

Azizur Rahman Azizur Rahman
9 апр. 2023 г. 17:45:04
Показать остальные 6 комментариев
0
18
$media_query = new WP_Query(
    array(
        'post_type' => 'attachment',
        'post_status' => 'inherit',
        'posts_per_page' => -1,
    )
);
$list = array();
foreach ($media_query->posts as $post) {
    $list[] = wp_get_attachment_url($post->ID);
}
// здесь можно что-то сделать с массивом $list;

Запрос к базе данных для получения всех элементов медиабиблиотеки (не только прикрепленных к записям), извлечение их URL-адресов и сохранение в массив $list.

13 мар. 2011 г. 00:01:51
0
<?php
    // Получаем все вложения (изображения) для текущего поста/страницы
    $attachments = get_children( array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' =>'image') );
    // Перебираем все полученные вложения
    foreach ( $attachments as $attachment_id => $attachment ) {
            // Выводим изображение с размером 'medium'
            echo wp_get_attachment_image( $attachment_id, 'medium' );
    }
?>

Этот код получает все вложения (изображения) для поста/страницы. Если вы добавите больше изображений к посту, они будут отображаться в списке.

12 мар. 2011 г. 17:10:26
0

ок, я использовал этот код для отображения ВСЕХ изображений в медиатеке!

$args = array(
    'post_type' => 'attachment',
    'post_status' => 'published',
    'posts_per_page' =>25,
    'post_parent' => 210, // ID записи;
    'numberposts' => null,
);

$attachments = get_posts($args);

$post_count = count ($attachments);

if ($attachments) {
    foreach ($attachments as $attachment) {
    echo "<div class=\"post photo col3\">";
        $url = get_attachment_link($attachment->ID);// получаю _posturl вложения      
        $img = wp_get_attachment_url($attachment->ID);
        $title = get_the_title($attachment->post_parent);//получаю заголовок
        echo '<a href="'.$url.'"><img title="'.$title.'" src="'.get_bloginfo('template_url').'/timthumb.php?src='.$img.'&w=350&h=500&zc=3"></a>';
        echo "</div>";
    }   
}

и если вы знаете метод для отображения пагинации, пожалуйста, ответьте.

27 февр. 2012 г. 17:52:12
1

Это сокращенная версия этого ответа, использующая функции get_posts() и array_map().

$image_ids = get_posts(
    array(
        'post_type'      => 'attachment', // тип записи - вложение
        'post_mime_type' => 'image',     // MIME-тип - изображение
        'post_status'    => 'inherit',   // статус записи - наследовать
        'posts_per_page' => -1,          // количество записей - все
        'fields'         => 'ids',       // возвращать только ID
    ) );

$images = array_map( "wp_get_attachment_url", $image_ids ); // получаем URL вложений
20 янв. 2016 г. 22:20:56
Комментарии

Это самый оптимизированный способ. Вы вызываете только поле ID, которое является единственным обязательным.

Usman Ahmed Usman Ahmed
20 окт. 2020 г. 09:45:57
0

Похоже, что он давно не обновлялся, но плагин Media Library Gallery может быть хорошим примером для начала изучения.

12 мар. 2011 г. 23:18:05