问题描述

有没有可用的过滤器可以设置这些自动生成的缩略图的命名约定?

这样的事情

  • thumbnail_150x150.jpg – > thumbnail-s.jpg

  • thumbnail_300x300.jpg – > thumbnail-m.jpg

  • thumbnail_600x600.jpg – > thumbnail-l.jpg

最佳解决方案

似乎答案是没有…

我遵循核心功能,发现了一个 dead-end 。并发现这个帖子 (How can I make add_image_size() crop from the top?),其中 Rarst 说:

Intermediate image generation is extremely rigid. Image_resize() keeps it close to code and completely lacks hooks.

但是,按照其他答案 (来自 bradt) 和他出版的代码 (Image Crop Position in WordPress),我想我得到它:)

在函数 bt_generate_attachment_metadata 中,我刚刚修改了对 bt_image_make_intermediate_size 的调用,包括最后一个参数 $size

$resized = bt_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'], $size );

并修改了 bt_image_make_intermediate_size 功能的开始,如下所示:

  • $size 参数添加到该功能

  • 而不是默认的 null 值到 $suffix,一个 switch 到我们的新后缀

function bt_image_make_intermediate_size( $file, $width, $height, $crop = false, $size ) {
    if ( $width || $height ) {
        switch($size) {
            case 'thumbnail':
                $suffix = 't';
                break;
            case 'medium':
                $suffix = 'm';
                break;
            case 'large':
                $suffix = 'l';
                break;
            default:
                $suffix = null;
                break;
        }
        $resized_file = bt_image_resize( $file, $width, $height, $crop, $suffix, null, 90 );

Here,我的 MOD 的完整代码的副本,仅供参考。和 diff from the original

很可能,所有的代码都可以缩小到裸骨,但是这样我们可以获得自定义裁剪图像的好处:))

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。