Đặt tên tùy chỉnh cho hình thu nhỏ được tạo


9

Có bộ lọc nào khả dụng để đặt quy ước đặt tên cho các hình thu nhỏ được tạo tự động đó không?

Một cái gì đó như thế này:

  • hình thu nhỏ_150x150.jpg -> hình thu nhỏ-s.jpg
  • Thumb_300x300.jpg -> Thumb-m.jpg
  • hình thu nhỏ_600x600.jpg -> hình thu nhỏ-l.jpg

Câu trả lời:


4

Có vẻ như câu trả lời là không ...

Tôi đã theo các chức năng cốt lõi và tìm thấy một ngõ cụt. Và tìm thấy bài đăng này ( Làm cách nào tôi có thể tạo add_image_size () crop từ đầu? ) Trong đó Rarst nói:

Tạo hình ảnh trung gian là vô cùng cứng nhắc. Image_resize () giữ cho nó gần với mã và hoàn toàn thiếu các hook.

Nhưng , theo sự dẫn dắt của câu trả lời khác (từ bradt ) và mã anh ấy đã xuất bản ( Image Crop Position trong WordPress ), tôi nghĩ rằng tôi đã nhận được nó :)

Trong hàm bt_generate_attachment_metadata, tôi vừa sửa đổi cuộc gọi để bt_image_make_intermediate_sizebao gồm tham số cuối cùng$size

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

Và sửa đổi chức năng xin lỗi bt_image_make_intermediate_sizenhư sau:

  • đã thêm $sizetham số cho hàm
  • thay vì nullgiá trị mặc định $suffix, a switchđến hậu tố mới của chúng tôi
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 );

Ở đây , một bản sao của mã đầy đủ với các mod của tôi, chỉ để tham khảo.
khác với bản gốc .

Rất có thể, tất cả các mã có thể được thu nhỏ lại chỉ còn một mảnh xương, nhưng bằng cách này chúng ta có được lợi ích của hình ảnh được cắt tùy chỉnh :))


1
xin lỗi, vẫn đi du lịch Tôi sẽ kiểm tra sớm và cho bạn biết. Cảm ơn.
Sean Lee

Câu trả lời này có còn hiệu lực không? Đã vài năm rồi, nên ...
Athoxx

2

Bạn có thể sử dụng bộ lọc image_make_inter liền_size , nhưng bạn sẽ phải tìm ra tên mà bạn muốn thay đổi tệp trung gian thành, theo tên tệp $ bạn nhận được (và sau đó đổi tên tệp, vì tại thời điểm này, nó đã được tạo).

Tôi chỉ tạo một hình ảnh kích thước trung gian cho "hình thu nhỏ", vì vậy nó đơn giản như sau:

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 có thể ít cụ thể hơn"/(.*)-\d+x\d+\.(.*)/i"
benoît
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.