set_post_thumbnail_size( 80, 80, true ); // true for all post types


假设我的博客上有两种帖子类型:帖子,视频和产品。我可能希望帖子的图片尺寸为80x80,而视频的图片尺寸为100x100,产品的图片尺寸为50x100。据我所知,我被迫为Post图片创建尺寸为100x100和50x100的缩略图。对于我的产品,即使我不会使用缩略图,也不得不创建80x80和100x100的缩略图。

是否可以根据帖子类型创建图像尺寸这样您就不会最终制作出您不打算使用的图像,并且浪费了可以在其他地方使用的资源?

评论

我遇到了完全相同的需求。

如果您在需要该图像尺寸的部分的主题中使用此功能image_resize,会发生什么情况,还可以根据上下文编写一种简写功能以供多种用途。

在我看来,这似乎是一个明显的疏忽,真的还没有解决吗?

帖子类型图像大小wordpress.org/plugins/post-types-image-sizes

#1 楼

无法将图像大小基于帖子类型,因为在您上载图像时还没有将图像附加到帖子上,并且创建了中间图像大小(当您仅通过“新媒体”添加它们时,它们甚至都没有被附加)

但是,我最近创建了两个插件,它们一起可以满足您的需求。虚拟中间映像将拦截中间映像大小的创建:它们不会在磁盘上创建,但仍存在于元数据数组中。这使WordPress认为它们存在,因此您可以像正常图像一样使用它们。随需插件,按需调整大小者将在请求时创建丢失的图像尺寸。第一次请求图像被创建时,所有后续请求都将被提供给新创建的图像。

这些插件在我放入WordPress插件目录之前需要重写。安全。或在不安全的地方至少有TODO条注释。

评论


真好!

– MikeSchinkel
2010-11-26 22:36

#2 楼

我在另一个线程上发布了一些代码,该代码在上载图像时设置了帖子类型的瞬变,然后在完成上传时检查该瞬变的值并相应地调整了缩略图的大小。它不是完美的或防弹的,但它至少应该证明这个概念。

#3 楼

我想出了以下解决方案。它确实只为自定义帖子类型创建图像,而没有创建任何其他图像。唯一的问题是,如果您使用高级自定义字段之类的插件,则在尝试呈现图库字段时,它仅显示默认的wordpress图片大小:“缩略图”,“中”,“大”,并且您无法访问创建的自定义帖子图片大小。

if ( function_exists ('add_image_size') ) {

function remove_default_img($sizes) {
    unset( $sizes['medium']);
    unset( $sizes['large']); 
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_img');

$type = get_post_type($_REQUEST['post_id']);
// Post_Name Image Sizes ======================================================
if ( $type === "Custom_Post_Name" || $post_type === "Custom_Post_Name" ) {
add_image_size('custom_size_img', 165, 249, true);
}


}