Ustaw niestandardową nazwę dla generowanych miniatur


9

Czy jest dostępny filtr do ustawiania konwencji nazewnictwa tych automatycznie generowanych miniatur?

Coś takiego:

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

Odpowiedzi:


4

Wydaje się, że odpowiedź brzmi nie ...

Śledziłem podstawowe funkcje i znalazłem ślepy zaułek. I znalazłem ten post ( Jak mogę zrobić uprawę add_image_size () od góry? ), W której Rarst mówi:

Pośrednie generowanie obrazu jest wyjątkowo sztywne. Image_resize () utrzymuje go blisko kodu i całkowicie brakuje haków.

Ale idąc tropem drugiej odpowiedzi (od bradta ) i kodu, który opublikował ( Image Crop Position w WordPress ), myślę, że ją mam :)

W funkcji bt_generate_attachment_metadatawłaśnie zmodyfikowałem wywołanie tak, aby bt_image_make_intermediate_sizezawierało ostatni parametr$size

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

I zmodyfikowałem początek funkcji bt_image_make_intermediate_sizew następujący sposób:

  • dodał $sizeparametr do funkcji
  • zamiast nullwartości domyślnej $suffix, a switchdo naszych nowych sufiksów
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 );

Tutaj kopia pełnego kodu z moimi modami, tylko w celach informacyjnych.
I różni się od oryginału .

Prawdopodobnie cały kod można skrócić do gołej kości, ale w ten sposób uzyskujemy korzyść z niestandardowych przyciętych obrazów :))


1
przepraszam, wciąż podróżuję. Przetestuję to wkrótce i dam znać. Dzięki.
Sean Lee

Czy ta odpowiedź jest nadal aktualna? Minęło kilka lat, więc ...
Athoxx

2

Możesz użyć filtru image_make_intermediate_size , ale musiałbyś dowiedzieć się, na jaką nazwę chcesz zmienić plik pośredni, zgodnie z otrzymaną $ nazwą pliku (a następnie zmień nazwę pliku, ponieważ w tym momencie został już wygenerowany).

Generuję tylko obraz o pośredniej wielkości dla „miniatury”, więc jest to tak proste:

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
Wyrażenie regularne może być mniej szczegółowe"/(.*)-\d+x\d+\.(.*)/i"
benoît
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.