如果图像的高度和宽度最小为我指定的大小,是否可以获取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();
最合适的回答,由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\') );