특정 게시물 유형에 대한 add_image_size ()


18
set_post_thumbnail_size( 80, 80, true ); // true for all post types

내 블로그에 게시물, 비디오 및 제품이라는 두 가지 게시물 유형이 있다고 가정합니다. 내 게시물에는 80x80 이미지 크기를 원하지만 비디오에는 100x100, 내 제품에는 50x100을 원할 수 있습니다. 내 지식으로는 100x100 및 50x100 크기의 Post 이미지에 대한 축소판을 만들어야합니다. 그리고 내 제품의 경우 이전에는 사용하지 않더라도 80x80 및 100x100 인 축소판을 만들어야합니다.

포스트 유형을 기반으로 이미지 크기를 생성하여 사용하지 않을 많은 이미지를 만들고 다른 곳에서 사용할 수있는 리소스를 낭비하지 않는 방법이 있습니까?


나는 정확히 같은 요구에 부딪쳤다.
— MikeSchinkel

해당 이미지 크기가 필요한 부분의 테마 에서이 함수 image_resize 를 사용하면 어떻게됩니까 ? 컨텍스트에 따라 여러 용도로 사용하는 단축 함수를 작성할 수도 있습니다.

나에게 명백한 감독 인 것 같지만 여전히 해결되지 않았습니까?
— Nathan Hornby 2012

답변:


12

이미지를 업로드 할 때 이미지가 아직 게시물에 첨부되지 않고 중간 이미지 크기가 만들어 지므로 ( "New Media"를 통해 이미지를 추가 할 때) 모든 게시물에).

그러나 최근 에 함께 원하는 것을 수행 할 수있는 두 개의 플러그인 을 만들었습니다 . 가상 중간 이미지 는 중간 이미지 크기 생성을 가로 챌 것입니다. 디스크에서 생성되지는 않지만 메타 데이터 배열에는 여전히 존재합니다. 이렇게하면 WordPress가 존재한다고 생각하므로 일반 이미지처럼 사용할 수 있습니다. 컴패니언 플러그인 인 On-Demand Resizer 는 요청시 누락 된 이미지 크기를 생성합니다. 이미지가 처음 요청 될 때 이미지가 생성되면 모든 후속 요청에 새로 생성 된 이미지가 제공됩니다.

이 플러그인은 WordPress 플러그인 디렉토리에 넣기 전에 다시 작성해야하지만 안전해야합니다. 또는 적어도 TODO안전하지 않은 곳에 의견을 말하십시오.


좋은!
— MikeSchinkel

2

이 다른 스레드 에 코드를 게시 하여 이미지를 업로드 할 때 게시 유형으로 임시를 설정 한 다음 해당 임시 값을 확인하고 업로드가 완료되면 그에 따라 축소판 크기를 조정합니다. 완벽하거나 방탄은 아니지만 최소한 개념을 보여 주어야합니다.


0

나는 다음 해결책을 생각해 냈습니다. 추가 게시물을 만들지 않고 사용자 정의 게시물 유형에 대해서만 이미지를 만듭니다. 유일한 문제는 고급 사용자 정의 필드와 같은 플러그인을 사용하는 경우 갤러리 필드를 렌더링하려고 할 때 기본 워드 프레스 이미지 크기 ( '썸네일', '중간', '대형') 만 표시하며 생성 된 사용자 정의 게시물 이미지 크기에 액세스 할 수 없다는 것입니다 .

if ( function_exists ('add_image_size') ) {

function remove_default_img($sizes) {
    unset( $sizes['medium']);
    unset( $sizes['large']); 
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_img');

$type = get_post_type($_REQUEST['post_id']);
// Post_Name Image Sizes ======================================================
if ( $type === "Custom_Post_Name" || $post_type === "Custom_Post_Name" ) {
add_image_size('custom_size_img', 165, 249, true);
}

}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.