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


28

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

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

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


Вы имеете в виду все изображения во всей библиотеке мультимедиа (т. Е. Для всего сайта)?
ZaMoose

Ответы:


51
$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;


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

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

1
Этот ответ НЕПРАВИЛЬНЫЙ . Он не получает изображения из библиотеки мультимедиа. Он получает изображения, используемые внутри постов. Неиспользуемые изображения не найдены!
Кристиан

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

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

17
$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);
}
// do something with $list here;

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


6
<?php
    $attachments = get_children( array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' =>'image') );
    foreach ( $attachments as $attachment_id => $attachment ) {
            echo wp_get_attachment_image( $attachment_id, 'medium' );
    }
?>

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


5

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

$args = array(
    'post_type' => 'attachment',
    'post_status' => 'published',
    'posts_per_page' =>25,
    'post_parent' => 210, // Post-> 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);// extraigo la _posturl del attachmnet      
        $img = wp_get_attachment_url($attachment->ID);
        $title = get_the_title($attachment->post_parent);//extraigo titulo
        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>";
    }   
}

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



1

Это просто более короткая версия этого ответа с использованием get_posts()и array_map().

$image_ids = get_posts(
    array(
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'post_status'    => 'inherit',
        'posts_per_page' => - 1,
        'fields'         => 'ids',
    ) );

$images = array_map( "wp_get_attachment_url", $image_ids );
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.