แสดงภาพย่อเฉพาะหากมีขนาดที่ร้องขอ


10

เมื่อฉันใช้ฟังก์ชั่นที่รับและส่งภาพขนาดย่อของโพสต์พวกเขาจะแสดงภาพขนาดย่อที่ร้องขอในขนาดที่คุณระบุ แต่หากไม่มีขนาดนี้พวกเขาจะแสดงภาพขนาดย่อในขนาดดั้งเดิมและบังคับให้เบราว์เซอร์ปรับขนาด

ฉันจะบังคับให้พวกเขาแสดงตัวยึดตำแหน่งเช่น "ไม่มีภาพ" ได้อย่างไรในกรณีที่ขนาดที่ร้องขอไม่มีอยู่


1
คุณกำลังพูดถึงขนาดภาพย่อที่ลงทะเบียนไว้หรือคุณพยายามที่จะรับขนาดที่ไม่ได้ลงทะเบียนเป็นพิกเซลหรือไม่? ตัวอย่างรหัสได้ไหม
Rarst

เกี่ยวกับขนาดที่ลงทะเบียน
Alex

คำตอบ:


2

สมมติว่าwp_get_attachment_image_srcเป็นคำถามที่เกี่ยวกับ
อาจเป็นเรื่องเกี่ยวกับwp_get_attachment_linkแต่ที่เกี่ยวข้องการวิเคราะห์นี้ไม่รวม


รับทราบปัญหานี้ตอบคำถามนี้: ฉันจะดูภาพขนาดย่อที่สร้างขึ้นทั้งหมดใน Media Manager ได้อย่างไร .
อ้างถึงมันเพื่อดูรหัสการทำงานเกี่ยวกับปัญหาในคำถามนี้

และจะนำไปสู่การนี้หัวข้อฟอรั่มเพรส


ฟังก์ชันwp_get_attachment_image_src ($ Attach_id, $ size, $ icon)ส่งคืนอาร์เรย์ที่มี:

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

หาก[3]เป็นเท็จoriginalข้อมูลภาพจะถูกส่งกลับ


ทั้งสอง wp_get_attachment_image_srcและwp_get_attachment_linkพึ่งพาในการทำงานภายในimage_downsize และนั่นคือสิ่งที่อาร์เรย์ 4 รายการนี้ถูกส่งคืน/wp-includes/media.php


1

ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้ แต่ฉันรู้ว่าคุณสามารถใช้ getimagesize ของ php () ฟังก์ชั่นดังนี้:

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

และฉันรู้ว่ามันไม่ใช่คำตอบสำหรับคำถามโดยตรง แต่คุณสามารถใช้ปลั๊กอินชื่อ AJAX Thumbnail Rebuild - ปลั๊กอินนี้ให้คุณสร้างรูปขนาดย่อของโพสต์ใหม่ มีประโยชน์หากคุณ add_image_size () หลังจากอัปโหลดภาพขนาดย่อของโพสต์แล้ว


1

นี่คือวิธีที่ฉันสามารถแสดงรูปขนาดย่อเฉพาะเมื่อมีขนาดที่ร้องขอ:

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

เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการwp_get_attachment_image_srcอ่าน Codex


0

มีปลั๊กอินที่จะสร้างขนาดภาพโดยอัตโนมัติสำหรับคุณหากไม่มีอยู่ http://austinmatzko.com/wordpress-plugins/filosofo-custom-image-sizes/

ฉันไม่ต้องการใช้ปลั๊กอินนี้ด้วยตัวเอง แต่มันก็คุ้มค่ากับการยิง มีการพูดคุยเกี่ยวกับการเพิ่มฟังก์ชั่นที่คล้ายกับ WP core อาจจะอยู่ใน 3.2 http://core.trac.wordpress.org/ticket/15311


0

ดูเหมือนว่าจะเป็นวิธีที่ดีกว่า ใช้ตัวแปรโกลบอล $ _wp_additional_image_sizes มันเก็บอิมเมจที่ลงทะเบียนไว้ทั้งหมด ดังนั้นหากคุณต้องการตรวจสอบว่าชื่อขนาดภาพกำหนดไว้หรือไม่:

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

0

วิธีที่ดีที่สุดคือการใช้ฟังก์ชั่น "get_intermediate_image_sizes" ของ Wordpress เพื่อส่งกลับรายการขนาดภาพทั้งหมดเป็นอาร์เรย์จากนั้นมองผ่าน

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

บางทีนี่อาจช่วยได้

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

จาก: http://codex.wordpress.org/Function_Reference/has_post_thumbnail
ฉันใช้สิ่งนี้เพื่อตรวจสอบว่ามีขนาดภาพอยู่หรือไม่:

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

หวังว่ามันจะช่วยให้คุณไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.