요청 된 크기가 존재하는 경우에만 섬네일 표시


10

게시물 썸네일을 가져오고 출력하는 기능을 사용하면 요청한 썸네일을 지정한 크기로 표시하지만이 크기가 존재하지 않으면 썸네일을 원래 크기로 표시하고 브라우저에서 크기를 조정합니다.

요청 된 크기가 존재하지 않는 경우 "이미지 없음"과 같은 자리 표시자를 표시하도록하려면 어떻게해야합니까?


1
등록 된 썸네일 크기에 대해 이야기하고 있거나 등록되지 않은 임의의 크기를 픽셀 단위로 얻으려고합니까? 코드 예를 들어주세요?
Rarst

등록 된 크기에 대해
Alex

답변:


2

질문이에 관한 것이라고 가정 합니다 wp_get_attachment_image_src.
또한 관련이있을 수 wp_get_attachment_link있지만 관련이 있지만이 분석에는 포함되지 않습니다.


이 질문에 답하는이 문제에 대해 알고 계십니까 : 미디어 관리자에서 WP 생성 썸네일을 모두 보려면 어떻게해야합니까? . 이 질문에
관한 문제 관한 작동 코드를 보려면 그것을 참조하십시오 .

그리고이 WordPress 포럼 주제로 연결 됩니다.


함수 wp_get_attachment_image_src ($ attachment_id, $ 크기, $ 아이콘)를 포함하는 배열을 반환합니다 :

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

경우 [3]거짓의 original이미지 데이터가 반환됩니다.


모두 wp_get_attachment_image_srcwp_get_attachment_link기능에 의존하는 image_downsize내부 /wp-includes/media.php.
그리고이 4 항목 배열이 반환되는 곳입니다.


1

나는 이것에 대해 확실하지 않지만 PHP의 getimagesize () 함수를 다음과 같이 사용할 수 있다는 것을 알고 있습니다 :

//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_srcCodex 에 대해 자세히 알아 보십시오.



0

더 나은 방법 인 것 같습니다. 전역 변수 $ _wp_additional_image_sizes를 사용하면 등록 된 모든 image_size가 저장됩니다. 따라서 이미지 크기 이름이 정의되어 있는지 확인하려면 다음을 수행하십시오.

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

0

가장 좋은 방법은 Wordpress의 내장 "get_intermediate_image_sizes"함수를 사용하여 이미지 크기의 전체 목록을 배열로 반환 한 다음 살펴 보는 것입니다.

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.