Отримати всі зображення в галереї медіа?


28

Чи є спосіб отримати URL-адреси ВСІХ зображень у медіа-галереї?

Я думаю, що це був би простий спосіб, щоб веб-сайт мав сторінку «Фотографії», яка просто перетягує всі зображення з галереї медіа, якщо це буде потрібно лише в певних сценаріях.

Мені не потрібні інструкції, як створити сторінку «Фотографії», а також як витягнути всі URL-адреси зображень. Спасибі!


Ви маєте на увазі всі зображення у всій бібліотеці медіа (тобто на сайті)?
ZaMoose

Відповіді:


50
$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-адресі сайту та структурі папок медіа. Але структура папки та домен могли змінитися в якийсь момент, і тоді настанова вже не є фактичною URL-адресою зображення, а лише записом того, що було, коли воно було створене ...
соматичне

1
Ця відповідь НЕПРАВИЛЬНА . З нього не надходять зображення з медіатеки. Він отримує зображення, використовувані всередині публікацій. Невикористані зображення не знайдені!
Крістіан

@Christian - це неправильно? Або я повинен запитати "все-таки" неправильно? Я розумію, що коментую майже 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;

Запитайте db для всіх елементів медіатеки (не лише тих, що додаються до публікацій), захопіть їх 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>";
    }   
}

і якщо ви знаєте метод показу сторінки, будь ласка, дайте відповідь.


3

Схоже, він не оновлювався деякий час, але плагін Media Library Gallery може бути хорошим прикладом для початку пошуку.


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.