问题描述
我使用了很多缩略图,但从来没有使用原始文件。为了节省空间,我想防止将原始文件保存在磁盘上,但只保留 100 像素的缩略图。我该怎么做?
谢谢丹尼斯
最佳解决方案
add_filter( 'wp_generate_attachment_metadata', 'delete_fullsize_image' );
function delete_fullsize_image( $metadata )
{
$upload_dir = wp_upload_dir();
$full_image_path = trailingslashit( $upload_dir['basedir'] ) . $metadata['file'];
$deleted = unlink( $full_image_path );
return $metadata;
}
次佳解决方案
我在网络上提供了另一种解决方案。它基于这里接受的一个,但它更进一步。
在这里接受的是删除 main-image 并继续。我发现的解决方案是通过为”large” 生成的图像替换原始图像。如果没有定义 image-resolution,它将继续进行。
这样,确保每个脚本依靠原始图像,仍然可以像以前一样工作 – 例如连续重命名。
http://www.wprecipes.com/how-to-automatically-use-resized-image-instead-of-originals
编辑:
@dalbaeb 指出我在 blog-post 的评论中写下了一个问题。我重写了基于 API 的代码,而不是在那里提供的解决方案。这不是很大的区别,只是使用与 API 中相同的函数调用;)
function replace_uploaded_image($image_data) {
// if there is no large image : return
if (!isset($image_data['sizes']['large'])) return $image_data;
// paths to the uploaded image and the large image
$upload_dir = wp_upload_dir();
$uploaded_image_location = $upload_dir['basedir'] . '/' .$image_data['file'];
$large_image_filename = $image_data['sizes']['large']['file'];
// Do what wordpress does in image_downsize() ... just replace the filenames ;)
$image_basename = wp_basename($uploaded_image_location);
$large_image_location = str_replace($image_basename, $large_image_filename, $uploaded_image_location);
// delete the uploaded image
unlink($uploaded_image_location);
// rename the large image
rename($large_image_location, $uploaded_image_location);
// update image metadata and return them
$image_data['width'] = $image_data['sizes']['large']['width'];
$image_data['height'] = $image_data['sizes']['large']['height'];
unset($image_data['sizes']['large']);
// Check if other size-configurations link to the large-file
foreach($image_data['sizes'] as $size => $sizeData) {
if ($sizeData['file'] === $large_image_filename)
unset($image_data['sizes'][$size]);
}
return $image_data;
}
add_filter('wp_generate_attachment_metadata', 'replace_uploaded_image');
EDIT2:
我在一个客户端上的代码有一个问题,另一个 size-configuration 链接到 large-file 。我相应地更新了代码。如果你有任何问题,请给我一个邮件。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。