Tampilkan thumbnail hanya jika ukuran yang diminta ada

10

Ketika saya menggunakan fungsi yang mendapatkan dan menampilkan thumbnail posting, mereka akan menampilkan thumbnail yang diminta dalam ukuran yang Anda tentukan, tetapi jika ukuran ini tidak ada, mereka akan menampilkan thumbnail dalam ukuran asli dan memaksa browser untuk mengubah ukurannya.

Bagaimana saya bisa memaksa mereka untuk menampilkan placeholder seperti "tidak ada gambar" seandainya ukuran yang diminta tidak ada?

Alex
sumber
1
Apakah Anda berbicara tentang ukuran thumbnail terdaftar atau Anda mencoba untuk mendapatkan ukuran non-terdaftar sewenang-wenang dalam piksel? Contoh kode tolong?
Paling lambat
tentang ukuran terdaftar
Alex

Jawaban:

2

Dengan asumsi pertanyaannya adalah tentang wp_get_attachment_image_src.
Bisa juga tentang wp_get_attachment_link, tetapi, meskipun terkait, analisis ini tidak memasukkannya.


Menyadari masalah ini menjawab pertanyaan ini: Bagaimana saya bisa melihat semua gambar mini yang dihasilkan WP di Media Manager? .
Merujuknya untuk melihat kode kerja mengenai masalah pada Pertanyaan ini .

Dan itu mengarah ke topik forum WordPress ini .


Fungsi wp_get_attachment_image_src ($ attachment_id, $ size, $ icon) mengembalikan array yang berisi:

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

Jika [3]salah, originaldata gambar dikembalikan.


Keduanya wp_get_attachment_image_src dan wp_get_attachment_linkmengandalkan fungsi image_downsize, di dalam /wp-includes/media.php.
Dan di situlah susunan 4 item ini dikembalikan.

brasofilo
sumber
1

Saya Tidak yakin tentang ini, tetapi saya tahu Anda dapat menggunakan fungsi getimagesize () php seperti ini:

//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" />';
}

dan saya tahu itu bukan jawaban untuk pertanyaan secara langsung tetapi Anda dapat menggunakan plugin yang disebut AJAX Thumbnail Rebuild - Plugin ini memungkinkan Anda untuk membangun kembali thumbnail postingan. Berguna jika Anda menambahkan_image_size () setelah sudah mengunggah gambar mini pos.

Bainternet
sumber
1

Ini adalah bagaimana saya dapat menampilkan thumbnail hanya jika ukuran yang diminta ada:

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
    }
}

Untuk mempelajari lebih lanjut tentang wp_get_attachment_image_srcmembaca Codex.

mengetahuinya
sumber
0

Sepertinya ini cara yang lebih baik. Gunakan variabel global $ _wp_additional_image_sizes, ini menyimpan semua image_size terdaftar. Jadi jika Anda ingin memeriksa apakah nama ukuran gambar ditentukan:

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

Pendekatan terbaik adalah dengan menggunakan fungsi "get_intermediate_image_sizes" bawaan Wordpress untuk mengembalikan daftar ukuran gambar lengkap sebagai sebuah array kemudian melihat melalui itu.

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] ) . '" />';
}
Charles Jaimet
sumber
-1

Mungkin ini akan membantu

<?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
Saya menggunakan sesuatu seperti ini untuk memeriksa apakah ukuran gambar ada:

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

Semoga ini bisa membantu Anda maju.

Thompson
sumber