针对特定帖子类型的add_image_size()


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

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

有没有一种方法可以创建基于帖子类型的图像大小,这样您就不会最终制作出您不打算使用的图像,并且浪费了可以在其他地方使用的资源?


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

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

在我看来,这似乎是一个明显的疏忽,是否真的还没有解决?
内森·霍恩比

Answers:


12

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

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

这些插件在我放入WordPress插件目录之前需要重写,但它们应该是安全的。或至少TODO在不安全之处发表评论。


真好!
MikeSchinkel 2010年

2

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


0

我想出了以下解决方案。它确实只为自定义帖子类型创建图像,而没有创建任何其他图像。唯一的问题是,如果您使用高级自定义字段之类的插件,则在尝试呈现图库字段时,它只会显示默认的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);
}

}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.