มีตัวกรองใด ๆ เพื่อตั้งค่าแบบแผนการตั้งชื่อของรูปขนาดย่อที่สร้างขึ้นอัตโนมัติหรือไม่
บางสิ่งเช่นนี้
- thumbnail_150x150.jpg -> thumbnail-s.jpg
- thumbnail_300x300.jpg -> thumbnail-m.jpg
- thumbnail_600x600.jpg -> thumbnail-l.jpg
มีตัวกรองใด ๆ เพื่อตั้งค่าแบบแผนการตั้งชื่อของรูปขนาดย่อที่สร้างขึ้นอัตโนมัติหรือไม่
บางสิ่งเช่นนี้
คำตอบ:
ดูเหมือนว่าคำตอบคือไม่ ...
ฉันได้ติดตามฟังก์ชั่นหลักและพบว่าจุดจบ และพบโพสต์นี้ ( ฉันจะทำให้การครอบตัด add_image_size () จากด้านบนได้อย่างไร ) ซึ่งRarstพูดว่า:
การสร้างภาพระดับกลางนั้นเข้มงวดมาก Image_resize () ช่วยให้มันอยู่ใกล้กับรหัสและไม่มีตะขออย่างสมบูรณ์
แต่จากคำตอบอื่น ๆ (จากbradt ) และรหัสที่เขาตีพิมพ์ ( Image Crop Position ใน 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 );
ที่นี่สำเนาของรหัสเต็มกับ mods ของฉันเพียงเพื่อการอ้างอิง
และแตกต่างไปจากเดิม
อาจเป็นไปได้ว่ารหัสทั้งหมดสามารถย่อเป็นกระดูกเปลือยได้ แต่วิธีนี้เราได้รับประโยชน์จากภาพที่ถูกตัดแบบกำหนดเอง :))
คุณสามารถใช้ตัวกรองimage_make_intermediate_sizeได้ แต่คุณต้องหาชื่อที่คุณต้องการเปลี่ยนไฟล์ระดับกลางตาม $ filename ที่คุณได้รับ (จากนั้นเปลี่ยนชื่อไฟล์เพราะตอนนี้มันถูกสร้างขึ้นแล้ว)
ฉันสร้างภาพขนาดกลางสำหรับ "ภาพย่อ" เท่านั้นดังนั้นมันจึงง่ายอย่างนี้:
add_filter( 'image_make_intermediate_size', function( $filename ) {
// old 2017_234783843-100x100.jpg
$old = $filename;
// new 2017_234783843-thumbnail.jpg
$new = preg_replace("/(\d+_\d+)-\d+x\d+\.(.*)/i", "$1-thumbnail.$2", $old );
rename($old, $new);
return $new;
} );
"/(.*)-\d+x\d+\.(.*)/i"