在媒体库中获取所有图像?


28

有没有一种方法可以获取媒体库中所有图像的URL ?

我认为这是网站拥有一个“图片”页面的简单方法,该页面仅从媒体库中提取所有图像,因为仅在某些情况下才需要。

我不需要有关如何创建“图片”页面的说明,只需了解如何提取所有图像URL。谢谢!


您是说整个媒体库中(即站点范围内)的所有图像吗?
ZaMoose 2011年

Answers:


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击败了我。与上述解决方案不同,我的解决方案只会获取图像。
Azizur Ra​​hman

2
显然,我们的方法是相似的...并且azizur是正确的,将'post_mime_type'添加到任一查询中将缩小返回的类型。要考虑的一件事:Guid通常确实包含图像的完整URL,但这不是可靠的来源。它是静态的,在创建帖子时仅生成一次,并基于当前站点的url和媒体文件夹结构构建。但是该文件夹的结构域可能会在某个时候发生变化,然后guid不再是实际的图像URL,而只是创建时的记录……
somatic,

1
这个答案是错误的。它不会从媒体库获取图像。它获取帖子内部使用的图像。找不到未使用的图像!
基督教徒

@Christian-是错的吗?还是我应该问“仍然”错误?我意识到我将在大约2年后发表评论,但是我在WP 3.6上进行了尝试,并且收到的图像是我刚刚添加到媒体库中的,而没有将它们添加到任何帖子中:/
Chris Kempen

可能是一个愚蠢的问题,但是我现在将如何获得不同的图像尺寸?
Frederik Witte

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 );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.