Oluşturulan küçük resimler için özel ad ayarlama


9

Otomatik oluşturulan bu küçük resimlerin adlandırma kuralını ayarlamak için herhangi bir filtre var mı?

Bunun gibi bir şey:

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

Yanıtlar:


4

Görünüşe yanıt olduğunu hiçbir ...

Temel işlevleri takip ettim ve çıkmaz sokak buldum. Ve (bu yazı bulundu ben yukarıdan add_image_size () kırpma yapabilir Nasıl? ) Nerede Rarst diyor ki:

Ara görüntü üretimi son derece katıdır. Image_resize () kodu koda yakın tutar ve kancalardan tamamen yoksundur.

Ancak , diğer cevabın ( bradt'tan ) ve yayınladığı kodun ( WordPress'te Resim Kırpma Konumu ) ardından, anladım :)

Fonksiyonda bt_generate_attachment_metadata, sadece bt_image_make_intermediate_sizeson parametreyi dahil etmek için çağrıyı değiştirdim$size

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

Ve fonksiyonun başlangıcını bt_image_make_intermediate_sizeaşağıdaki gibi değiştirdi :

  • $sizeparametreyi işleve ekledi
  • yerine, yeni soneklerimizdeki a nulldeğeri$suffixswitch
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 );

Burada , sadece referans için modlarım ile tam kodun bir kopyası.
Ve orijinalden farkı .

Büyük olasılıkla, tüm kod çıplak bir kemiğe büzülebilir, ancak bu şekilde özel kırpılmış görüntülerden faydalanırız :))


1
üzgünüm, hala seyahat ediyorum. Yakında test edeceğim ve size bildireceğim. Teşekkürler.
Sean Lee

Bu cevap hala geçerli mi? Birkaç yıl oldu, yani ...
Athoxx

2

İmage_make_intermediate_size filtresini kullanabilirsiniz , ancak aldığınız $ dosya adına göre ara dosyayı hangi adı değiştirmek istediğinizi bulmanız gerekir (ve sonra dosyayı yeniden adlandırın, çünkü bu noktada zaten oluşturulmuştur).

Ben sadece "küçük resim" için bir ara boyut görüntü oluşturmak, bu yüzden bu kadar basit:

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
normal ifade daha az spesifik olabilir"/(.*)-\d+x\d+\.(.*)/i"
benoît
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.