如何获取图片帖子中图片的id或url?

时间:2013-06-23 作者:JPollock

我有一堆图片帖子,我想得到那些我没有设置特色图片的图片的ID,以便我可以使用wp_get_attachment_image_src() 获取这些图像的各种大小的URL。

这是我创建的:

$img_posts = get_posts( array(
    \'tax_query\' => array(
        array(
          \'taxonomy\' => \'post_format\',
          \'field\'    => \'slug\',
          \'terms\'    => \'post-format-image\',
          \'operator\' => \'IN\'
        )
    )
) );

foreach( (array) $img_posts as $post ) {
    setup_postdata( $post );
   $imgID = get_img_id();
    //img sources
    $thumb = wp_get_attachment_image_src($imgID, \'thumb\');
    $reg = wp_get_attachment_image_src($imgID, \'large\');
    $big = wp_get_attachment_image_src($imgID);
}
Theget_img_id 第6到最后一行的函数可能是我所有问题的根源,如下所示:

function get_img_id() {
        global $post;
        $id = intval( $post->ID );
        $imgID = get_children( array(
                \'post_parent\' => $id,
                \'post_status\' => \'inherit\',
                \'post_type\' => \'attachment\',
                \'post_mime_type\' => \'image\',
                \'order\' => \'ASC\',
                \'numberposts\' => 1
            ) );

    return $imgID;
}
当我这样做时,我没有得到任何错误或输出。如果我添加以下内容the_content 相反,它可以正常工作。

更新:根据@TheDeadMedic的建议,我尝试了以下方法:

$img_posts = get_posts( array(
    \'cat\' => \'2\',
    \'tax_query\' => array(
        array(
          \'taxonomy\' => \'post_format\',
          \'field\'    => \'slug\',
          \'terms\'    => \'post-format-image\',
          \'operator\' => \'IN\'
        )
    )
) );
foreach( (array) $img_posts as $post ) {
    setup_postdata( $post );
    $img_id = get_img_id();
    var_dump ($img_id);
}
此返回

array
    empty
每个查询的帖子一次。

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

因为$imgID 是post对象的数组。而不是:

return $imgID;
您需要:

return $imgID ? key( $imgID ) : 0;
get_children 返回按其ID索引的帖子数组,您只需使用key 返回第一个的值。

结束

相关推荐

Hover images and Videos

我用这个代码在我的博客上显示视频循环。它工作得很好。作用phpfunction catch_video() { global $post, $posts; $first_vid = \'\'; ob_start(); ob_end_clean(); $output = preg_match_all(\'/<iframe.+src=[\\\'\"]([^\\\'\"]+)[\\\'\"].*>/i\', $post->post_c