ตั้งชื่อที่กำหนดเองสำหรับภาพขนาดย่อที่สร้างขึ้น


9

มีตัวกรองใด ๆ เพื่อตั้งค่าแบบแผนการตั้งชื่อของรูปขนาดย่อที่สร้างขึ้นอัตโนมัติหรือไม่

บางสิ่งเช่นนี้

  • thumbnail_150x150.jpg -> thumbnail-s.jpg
  • thumbnail_300x300.jpg -> thumbnail-m.jpg
  • thumbnail_600x600.jpg -> thumbnail-l.jpg

คำตอบ:


4

ดูเหมือนว่าคำตอบคือไม่ ...

ฉันได้ติดตามฟังก์ชั่นหลักและพบว่าจุดจบ และพบโพสต์นี้ ( ฉันจะทำให้การครอบตัด 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 ของฉันเพียงเพื่อการอ้างอิง
และแตกต่างไปจากเดิม

อาจเป็นไปได้ว่ารหัสทั้งหมดสามารถย่อเป็นกระดูกเปลือยได้ แต่วิธีนี้เราได้รับประโยชน์จากภาพที่ถูกตัดแบบกำหนดเอง :))


1
ขออภัยยังคงเดินทาง ฉันจะทดสอบในไม่ช้าและแจ้งให้คุณทราบ ขอบคุณ
ฌอนลี

คำตอบนี้ยังคงใช้ได้หรือไม่? ไม่กี่ปีที่ผ่านมา ...
Athoxx

2

คุณสามารถใช้ตัวกรอง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;
} );

1
regex อาจมีความเฉพาะเจาะจงน้อยลง"/(.*)-\d+x\d+\.(.*)/i"
จ่าย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.