問題描述

有沒有可用的過濾器可以設置這些自動生成的縮略圖的命名約定?

這樣的事情

  • 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。