如何查询帖子库中找到的所有附件图片

时间:2015-11-10 作者:Stephen S.

我正在尝试创建一个图像库,其中包含贴在帖子上的所有图像。下面的查询效果很好,但最终得到的是所有附加的图像,而不仅仅是发布的帖子和帖子库中实际使用的图像。不幸的是,在一些帖子上有20个附件,其中只有10-15个在实际帖子中使用。

是否有办法修改此查询,只返回帖子和帖子库中使用过的图像?

// Get All Post IDs
$post_image_query = new WP_Query( 
    array( 
        \'post_type\' => \'post\', 
        \'posts_per_page\' => -1,
        \'fields\' => \'ids\'
    ) 
);

// Get All Attachments of Posts from $post_image_query 
$the_query = new WP_Query( 
    array(
        \'post_type\' => \'attachment\',
        \'post_status\' => \'inherit\',
        \'post_parent__in\' => $post_image_query->posts
    );
);

1 个回复
SO网友:Stephen S.

在做了更多的研究之后,我找到了一种方法来做到这一点,尽管它似乎不是一个很好的解决方案,因为它需要很长的时间才能运行,因为它基本上只是在每个帖子中循环使用get_post_gallery().

也许有更好的方法,也许其他人以前也想过。

// Get All Post IDs
$post_image_query = new WP_Query( 
    array( 
        \'post_type\' => \'post\', 
        \'posts_per_page\' => -1,
        \'fields\' => \'ids\'
    ) 
);

$selected_posts = $post_image_query->posts;
$image_list_array = array();

// Loop through all posts and grab the image gallery
foreach($selected_posts as $post) {

    $post_gallery = get_post_gallery( $post, false );

    //retrieve individual ids from string
    $image_ids = explode(\',\', $post_gallery[\'ids\']);

    //build the array
    foreach($image_ids as $image_id) {
        $image_list_array[] = $image_id;
    }
}

// Get All Attachments of Posts from $post_image_query 
$the_query = new WP_Query( 
    array(
        \'post_type\' => \'attachment\',
        \'post_status\' => \'inherit\',
        \'orderby\' => \'post_parent__in\',
        \'post_parent__in\' => $image_list_array
    )
);

相关推荐

Use wget to find used images

我正在寻找方法来清理一个站点的图像目录,该站点已经被未使用的图像和缩略图超载。是否可以使用wget只下载站点上html页面引用的图像?我注意到可以浏览下载文件夹并查看列出的文件,所以我假设直接的wget-r将下载这些文件。如何使用wget,但不包括对上传目录进行爬网?