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

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

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

评论

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

#1 楼

$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)
2011-3-12在22:19

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

–体细胞
2011-3-13在3:43



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

–基督徒
2011-10-10 12:38



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

–克里斯·肯彭(Chris Kempen)
13年8月16日在17:19

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

– Frederik Witte
16年7月17日在14:31

#2 楼

$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数组中。

#3 楼

<?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' );
    }
?>


这会拉出帖子/页面的所有附件。
将更多图像添加到帖子,它将被列出

#4 楼

好的,您可以使用此代码在媒体库中显示所有图像!

$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>";
    }   
}


,如果您知道显示分页的方法,请回答。

#5 楼

看起来好像已经有一段时间没有更新了,但是Media Library Gallery插件可能是一个很好的例子。

#6 楼

这只是使用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 );


评论


这是最优化的方法。您只是在呼叫ID字段,这是唯一需要的字段。

–乌斯曼·艾哈迈德(Usman Ahmed)
20-10-20在6:45