Tampaknya jawabannya adalah tidak ...
Saya telah mengikuti fungsi inti dan menemukan jalan buntu. Dan menemukan posting ini ( Bagaimana saya bisa membuat add_image_size () memotong dari atas? ) Di mana Rarst mengatakan:
Generasi gambar menengah sangat kaku. Image_resize () menyimpannya dekat dengan kode dan benar-benar tidak memiliki kait.
Tapi , mengikuti petunjuk dari jawaban lain (dari bradt ) dan kode yang dia terbitkan ( Posisi Pemotongan Gambar di WordPress ), saya rasa saya mengerti :)
Dalam fungsinya bt_generate_attachment_metadata
, saya baru saja memodifikasi panggilan untuk bt_image_make_intermediate_size
memasukkan parameter terakhir$size
$resized = bt_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'], $size );
Dan memodifikasi awal fungsi bt_image_make_intermediate_size
sebagai berikut:
- menambahkan
$size
parameter ke fungsi
- alih-alih nilai default
null
ke $suffix
, a switch
ke sufiks baru kami
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 );
Di sini , salinan kode lengkap dengan mod saya, hanya untuk referensi.
Dan beda dari aslinya .
Sangat mungkin, semua kode dapat menyusut sampai tulang kosong, tetapi dengan cara ini kita mendapatkan manfaat dari gambar yang dipangkas khusus :))
Anda dapat menggunakan filter image_make_intermediate_size , tetapi Anda harus mencari tahu nama yang ingin Anda ubah file perantara, sesuai dengan $ filename yang Anda dapatkan (dan kemudian ganti nama file tersebut, karena pada titik ini sudah dibuat).
Saya hanya menghasilkan gambar ukuran sedang untuk "thumbnail", jadi sesederhana ini:
sumber
"/(.*)-\d+x\d+\.(.*)/i"