问题描述
我有 1000 张图片。只有在需要时,我如何才能使 wordpress 生成缩略图。例如,家用滑块将仅使用 10 张图像,我不希望其他 1000 张图像生成缩略图,因为它浪费了空间和资源。
有没有办法只有在需要的时候才能使用 add_image_size?
谢谢
更新如你所提到的不是真正的 add_image_size 它需要被触发。当我使用 the_post_thumbnail(‘slider-thumb’) 时,启动图像调整大小是什么?也许这个放缓的第一个图像的视图,但是这个视图通常是由我生成的,当我实际审查的帖子,所以我不在乎。
所以在我的帖子,滑块,博客拇指,投资组合缩略图等我有 1000 个图像,我只需要 10 个图像调整大小的滑块,我看到很多浪费的资源,以生成其他 990 图像的缩略图大小。
希望清楚现在,对不起我的英语
最佳解决方案
看看奥托的 Dynamic Image Resizer plugin
This plugin changes the way WordPress creates images to make it generate the images only when they are actually used somewhere, on the fly. Images created thusly will be saved in the normal upload directories, for later fast sending by the webserver. The result is that space is saved (since images are only created when needed), and uploading images is much faster (since it’s not generating the images on upload anymore).
次佳解决方案
把它放在你的主题功能文件中。它会阻止 WordPress 创建任何东西,但上传 3 默认大小。
当然后以特定大小请求图像,该图像尚未生成时,将仅创建一次图像。
add_filter('image_downsize', 'ml_media_downsize', 10, 3);
function ml_media_downsize($out, $id, $size) {
// If image size exists let WP serve it like normally
$imagedata = wp_get_attachment_metadata($id);
if (is_array($imagedata) && isset($imagedata['sizes'][$size]))
return false;
// Check that the requested size exists, or abort
global $_wp_additional_image_sizes;
if (!isset($_wp_additional_image_sizes[$size]))
return false;
// Make the new thumb
if (!$resized = image_make_intermediate_size(
get_attached_file($id),
$_wp_additional_image_sizes[$size]['width'],
$_wp_additional_image_sizes[$size]['height'],
$_wp_additional_image_sizes[$size]['crop']
))
return false;
// Save image meta, or WP can't see that the thumb exists now
$imagedata['sizes'][$size] = $resized;
wp_update_attachment_metadata($id, $imagedata);
// Return the array for displaying the resized image
$att_url = wp_get_attachment_url($id);
return array(dirname($att_url) . '/' . $resized['file'], $resized['width'], $resized['height'], true);
}
add_filter('intermediate_image_sizes_advanced', 'ml_media_prevent_resize_on_upload');
function ml_media_prevent_resize_on_upload($sizes) {
// Removing these defaults might cause problems, so we don't
return array(
'thumbnail' => $sizes['thumbnail'],
'medium' => $sizes['medium'],
'large' => $sizes['large']
);
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。