Chỉ hiển thị hình thu nhỏ nếu kích thước được yêu cầu tồn tại


10

Khi tôi sử dụng các chức năng nhận và xuất hình thu nhỏ của bài đăng, chúng sẽ hiển thị hình thu nhỏ được yêu cầu theo kích thước bạn chỉ định, nhưng nếu kích thước này không tồn tại, chúng sẽ hiển thị hình thu nhỏ ở kích thước ban đầu và buộc trình duyệt thay đổi kích thước.

Làm cách nào tôi có thể buộc họ hiển thị một trình giữ chỗ như "không có hình ảnh" trong trường hợp kích thước được yêu cầu không tồn tại?


1
Bạn đang nói về kích thước hình thu nhỏ đã đăng ký hoặc bạn đang cố gắng để có được kích thước không đăng ký tùy ý bằng pixel? Xin ví dụ mã?
Hết

về kích thước đã đăng ký
Alex

Câu trả lời:


2

Giả sử câu hỏi là về wp_get_attachment_image_src.
Nó cũng có thể là về wp_get_attachment_link, nhưng, mặc dù có liên quan, phân tích này không bao gồm nó.


Nhận thức được vấn đề này khi trả lời câu hỏi này: Làm cách nào tôi có thể xem tất cả các hình thu nhỏ được tạo trong WP trong Trình quản lý phương tiện? .
Tham khảo nó để xem một mã làm việc liên quan đến vấn đề về Câu hỏi này .

Và nó dẫn đến chủ đề diễn đàn WordPress này .


Hàm wp_get_attachment_image_src ($ Đính kèm_id, $ size, biểu tượng $) trả về một mảng chứa:

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

Nếu [3]sai, originaldữ liệu ảnh được trả về.


Cả hai wp_get_attachment_image_srcwp_get_attachment_linkdựa vào chức năng image_downsize, bên trong /wp-includes/media.php.
Và đó là nơi mảng 4 mặt hàng này đang được trả lại.


1

Tôi không chắc về điều này nhưng tôi biết bạn có thể sử dụng hàm getimagesize () của php giống như thế này:

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

và tôi biết đó không phải là câu trả lời trực tiếp cho câu hỏi nhưng bạn có thể sử dụng một plugin có tên AJAX Thumbnail Rebuild - Plugin này cho phép bạn xây dựng lại hình thu nhỏ của bài đăng. Hữu ích nếu bạn add_image_size () sau khi đã tải lên hình thu nhỏ của bài đăng.


1

Đây là cách tôi chỉ có thể hiển thị hình thu nhỏ nếu kích thước được yêu cầu tồn tại:

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

Để tìm hiểu thêm về wp_get_attachment_image_srcđọc Codex.



0

Nó dường như là một cách tốt hơn. Sử dụng biến toàn cục $ _wp_additable_image_sizes, nó lưu trữ tất cả hình ảnh đã đăng ký. Vì vậy, nếu bạn muốn kiểm tra xem tên kích thước hình ảnh có được xác định không:

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

0

Cách tiếp cận tốt nhất là sử dụng hàm "get_inter liền_image_sizes" tích hợp của Wordpress để trả về danh sách đầy đủ các kích thước hình ảnh dưới dạng một mảng sau đó xem qua điều đó.

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

Có thể điều này sẽ giúp

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

từ: http://codex.wordpress.org/Function_Reference/has_post_thumbnail
Tôi sử dụng một cái gì đó như thế này để kiểm tra xem kích thước hình ảnh có tồn tại không:

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

Hy vọng nó sẽ giúp bạn đi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.