Küçük resmi yalnızca istenen boyut varsa görüntüle


10

Yazı küçük resmini alan ve çıkaran işlevleri kullandığımda, istenen küçük resmi belirttiğiniz boyutta görüntüler, ancak bu boyut yoksa küçük resmi orijinal boyutunda görüntüler ve tarayıcıyı yeniden boyutlandırmaya zorlar.

İstenen boyutun mevcut olmaması durumunda onları "resim yok" gibi bir yer tutucu göstermeye nasıl zorlayabilirim?


1
Kayıtlı küçük resim boyutlarından mı bahsediyorsunuz yoksa piksel olarak rasgele kaydedilmemiş boyut almaya mı çalışıyorsunuz? Kod örneği lütfen?
Rarst

boyutları hakkında
Alex

Yanıtlar:


2

Sorunun ilgili olduğu varsayılarakwp_get_attachment_image_src .
Aynı zamanda ilgili olabilir wp_get_attachment_link, ancak ilişkili olmasına rağmen bu analiz bunu içermez.


Bu soruyu cevaplayan bu sorunun farkındasınız : Media Manager'da WP tarafından oluşturulan tüm küçük resimleri nasıl görüntüleyebilirim? . Bu Sorudaki
sorunla ilgili bir çalışma kodu görmek için buna başvurun .

Ve bu WordPress forum konusuna yol açar .


İşlev wp_get_attachment_image_src ($ attachment_id, $ boyut, $ simge) ihtiva eden bir dizi döndürür:

[0] => url  
[1] => width  
[2] => height  
[3] => is intermediate

Eğer [3]yanlış, originalgörüntü verileri döndürülür.


Her ikisi de wp_get_attachment_image_src ve wp_get_attachment_linkişlevinde kullanan image_downsizeiçinde /wp-includes/media.php.
İşte bu 4 maddelik dizi döndürülüyor.


1

Bu konuda emin değilim ama php's getimagesize () işlevi böyle bir şey kullanabilirsiniz biliyorum:

//This must be in one loop

if(has_post_thumbnail()) {
    $wanted_width = 300;
    $wanted_height = 150;
    $id = get_post_thumbnail_id()
    $image = wp_get_attachment_image_src($id);
    if ($image){
        list($width, $height) = getimagesize($image[0]);
        if (($wanted_height = $width) && ($wanted_height = $height)){
            the_post_thumbnail();
        }
        else{
            //default when no image
            echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
        }
    }
    else{
        //default when no image
        echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
    }
} else {
    //default when no image
    echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}

ve bu sorunun doğrudan bir cevap olmadığını biliyorum ama AJAX Thumbnail Rebuild adlı bir eklenti kullanabilirsiniz - Bu eklenti sonrası küçük resimler yeniden oluşturmak için izin verir. Önceden küçük resim yükledikten sonra_image_size () eklerseniz faydalıdır.


1

Ben sadece istenen bir boyut varsa bir küçük resim görüntülemek mümkün oldu:

if ( has_post_thumbnail() )  {
    $imgdata = wp_get_attachment_image_src( get_post_thumbnail_id(), 'thumbnail' ); //change thumbnail to whatever size you are using
    $imgwidth = $imgdata[1]; // thumbnail's width                   
    $wanted_width = 300; //change this to your liking
    if ( ($imgwidth < $wanted_width ) ) {
        the_post_thumbnail();
    } else { 
        //do whatever you want
    }
}

Hakkında daha fazla bilgi edinmek wp_get_attachment_image_srciçin Kodeksi okuyun.



0

Daha iyi bir yol gibi görünüyor. $ _Wp_additional_image_sizes genel değişkenini kullanın, tüm kayıtlı image_size depolayın. Bir görüntü boyutu adının tanımlanıp tanımlanmadığını kontrol etmek istiyorsanız:

  global $_wp_additional_image_sizes;
  if ( array_key_exists( 'desired-image-size' , $_wp_additional_image_sizes) )
  {
    //your code here
  }
  else
  {
    //default code here 
  }

0

En iyi yaklaşım, Wordpress'in yerleşik "get_intermediate_image_sizes" işlevini kullanarak görüntü boyutlarının tam listesini bir dizi olarak döndürüp ona bakın.

show_image_by_size( 10470, 'custom_size' );

function show_image_by_size( $_post_id, $_desired_size ) {
  $_sizes = get_intermediate_image_sizes();
  $_thumbnail_id = get_post_thumbnail_id( $_post_id );
  $_image_size = ( in_array( $_desired_size , $_sizes ) ) ? $_desired_size : 'full';
  $image = wp_get_attachment_image_src( $_thumbnail_id, $_image_size );
  echo '<img src="' . esc_url( $image[0] ) . '" />';
}

-1

Belki bu yardımcı olur

<?php 
//This must be in a loop
if(has_post_thumbnail()) {
    the_post_thumbnail();
} else {
    echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}
?>

from: http://codex.wordpress.org/Function_Reference/has_post_thumbnail
Görüntü boyutunun mevcut olup olmadığını kontrol etmek için böyle bir şey kullanıyorum:

if (function_exists('has_post_thumbnail') && has_post_thumbnail('medium')) {
//// code to display thumbnail goes here
}
else {
/// otherwise do this
}

Umarım gitmene yardımcı olur.

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.