获取帖子上附加的第一张图片的ID

时间:2014-05-07 作者:Poisontonomes

我正在寻找一种解决方案,使我能够获取附加到循环中帖子的第一张图像的ID。

我目前正在使用这个;

$size = \'post-thumbnail\'; // Define image_size to be used
$args = array(
    \'post_type\'        => \'attachment\',
    \'post_mime_type\'   => \'image\',
    \'post_parent\'      => $post->ID
);
$images = get_posts($args);
$attachment_id = $images[0]->ID;
$i = wp_get_attachment_image_src($attachment_id, $size);

if (has_post_thumbnail()) { // Check if post thumbnail is present first
    the_post_thumbnail($size);
} else { // If no post thumbnail is present, echo first image in post
    echo \'<img src="\'.$i[0].\'" alt=""/>\';
}
如果它在单个帖子上运行,则效果很好,但在帖子循环中无法正常运行(它只在1个帖子上获取ID,而不是所有帖子)。

我在google上搜索了一下,发现的每个函数似乎都有相同的问题,它只获得了一个帖子的ID。

有人能帮我吗?

这需要是一个函数,而不是插件。

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

我想你所有的代码都被包装在循环中了?在操作之前,您应该检查帖子是否确实有附件$images 阵列:

while ( have_posts() ) {
    the_post();

    if ( has_post_thumbnail() ) {
        the_post_thumbnail( /* No need for "post-thumbnail" argument, it\'s the default. */ ); 
    } else {
        // No post thumbnail, try attachments instead.
        $images = get_posts(
            array(
                \'post_type\'      => \'attachment\',
                \'post_mime_type\' => \'image\',
                \'post_parent\'    => $post->ID,
                \'posts_per_page\' => 1, /* Save memory, only need one */
            )
        );

        if ( $images ) {
            echo \'<img src="\' . wp_get_attachment_image_src( $images[0]->ID, \'post-thumbnail\' ) . \'" alt="" />\';
        }
    }
}
请注意,我已经对您的代码进行了一些结构化处理——如果帖子已经有缩略图,则无需加重服务器负担并查询附件。

结束

相关推荐

Shotcode error on functions

您好,我有一个生成错误的短代码。有人能帮忙吗?add_shortcode(\'do-action\', \'do_action_shortcode\'); function do_action_shortcode($atts, $content = \'\') {   ob_start();   do_action($content);   $out = ob_get_contents();   ob_end_clean();   return $