获取宽度和高度为指定最小值的图像的URL、宽度和高度

时间:2014-05-21 作者:David Gard

如果图像的高度和宽度最小为我指定的大小,是否可以获取URL、高度和宽度?

wp_get_attachment_image_src() 几乎可以做到这一点,但不完全可以,而是抓取高度或宽度中的一个最小为我指定的大小的图像。

示例

例如此->;wp_get_attachment_image_src(get_the_ID(), array(208,208)); 将返回这些结果-

array (
  0 => \'http://localhost/wp-content/uploads/2014/04/image-name-300x168.jpg\',
  1 => 208,
  2 => 116,
  3 => true,
)
正如您所看到的,高度小于208,因此当我使用这些属性显示图像时,它会被拉伸。

因此,在上述情况下,我实际上需要WP找到下一个大小的图像并返回这些结果-

array (
  0 => \'http://localhost/wp-content/uploads/2014/04/image-name-672x372.jpg\',
  1 => 376,
  2 => 208,
  3 => true,
)
当然,我不只是想获取原始(因此最大)图像,因为这将不必要地占用带宽,并导致页面加载变慢。

背景

如果您想知道我为什么需要这个,我将在一个方形容器(208x208)中显示4x个图像。图像水平和垂直居中,我需要图像尽可能小地填充容器。

代码

<?php
if($this->items->have_posts()) : while($this->items->have_posts()) : $this->items->the_post();

        $last = ($this->is_last_on_line()) ? \'last\' : false;
        $media_preview = wp_get_attachment_image_src(get_the_ID(), array(208,208));
        $sizing = ($media_preview[1] >= $media_preview[2]) ? \'height="208"\' : \'width="208"\';                
?>
        <div id="post-<?php the_ID(); ?>" class="preview-container <?php echo $last; ?>">   
            <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                <img src="<?php echo $media_preview[0]; ?>" <?php echo $sizing; ?> />
            </a>
        </div>
<?php
    endwhile;
endif;
wp_reset_query();

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

如果您手头有208x208px的方形容器大小,那么为什么不在函数文件中添加一个自定义图像大小,并在模板中调用该图像大小。

将此添加到主题功能中。php:

add_image_size( \'custom-size\', 208, 208, true );
如果您运行的是WordPress 3.9,您也可以使用裁剪,因此您可以这样使用它:

add_image_size( \'custom-size\', 220, 220, array( \'center\', \'center\' ) );
然后在模板文件中调用它:

$media_preview = wp_get_attachment_url( get_post_thumbnail_id($post->ID, \'custom-size\') );

结束

相关推荐

Latest news mini images

我试图在网站和其他论坛上找到答案,但一无所获。我会尽力解释我的问题。我需要更改我的WordPress网站,以便在主页上的“最新新闻”中显示所有新闻文章的小图像。如果这很重要,我正在使用headway主题编辑器。upd:根据评论中的要求,以下是my website.