코스모스팜 스레드

이미지 업로드 특정 사이즈만 저장하는 방법?

안녕하세요. 궁금한 것이 있어 글을 올립니다.

 

어설프게 워드프레스 테마를 하나 만들었습니다.

functions.php에 이미지 업로드 시 이미지 사이즈 설정을 했습니다.

예를 들어, 현재, (아래는 functions.php에 들어간 내용입니다.)

add_image_size( 'small_img', 200, 120, true );
add_image_size( 'large_img', 500, 20, true );
add_image_size( 'very_large_img', 900, 350, true );
add_image_size( 'special', 700, 150, true );

위와 같이 이미지 원본을 제외하고 총 4가지의 이미지가 저장된다고 하면,

워드프레스 내장 이미지 업로드를 사용할 때마다 4가지의 사이즈가 모두 저장되는 것으로 알고 있습니다.

그래서, 이것을  page id=2 라는 특정 페이지에서 워드프레스 이미지를 업로드 할때는 이미지 사이즈를  'special' (700*150) 만 저장하도록 설정하려고 합니다.

(front에서 미디어업로드가 가능하도록 해놓은 상태..)

그래서

if( is_page( 2 ) ){
    add_image_size( 'special', 700, 150, true );
}

이렇게 바꿨더니, 이 special 사이즈가 전혀 저장이 되지 않네요..ㅠ

혹시 특정 페이지에서 업로드 할때, 원하는 사이즈만 저장되게 설정할 수 있는 방법이 있나요?ㅠ..

 

조언을 부탁드려도 될런지요.. 감사합니다.

이 페이지의 내용이 유익하시나요? 혹은 더 많은 답변을 받길 원하시면 이 페이지를 공유 해보시는건 어떨까요?

내 홈페이지에 소셜 공유 버튼 추가하기

코스모스팜 회원관리
코스모스팜 회원관리
  • 안녕하세요~^^

    이미지 원본은 항상 저장됩니다.

    아래는 예제 코드입니다.

    init 액션에 코드를 추가했습니다.

    add_action('init', 'my_image_size');
    function my_image_size(){
    	if(is_page(20)){
    		add_image_size('special', 700, 150, true);
    		remove_image_size('small_img');
    		remove_image_size('large_img');
    		remove_image_size('very_large_img');
    	}
    	else{
    		add_image_size('small_img', 200, 120, true);
    		add_image_size('large_img', 500, 20, true);
    		add_image_size('very_large_img', 900, 350, true);
    		add_image_size('special', 700, 150, true);
    	}
    }

    불필요한 이미지 사이즈는 만들어지지 않도록 remove_image_size 함수도 적절히 사용을 해보시겠어요?

    고맙습니다.

  • 답변 감사합니다.

    그런데

    add_image_size를 if(is_page(20)){ } 안에 넣으면 전혀 해당사이즈가 전혀 추가되지 않네요..ㅠ

  • is_page(20) 이쪽에서 20이라는 것은 페이지의 id값입니다.

    id값이 일치해야 하며,

    그리고 상황에 따라서 동작이 안될 수 있습니다. (저희는 KBoard 글 쓸때 테스트틀 해봤습니다.)

    왜냐하면 미디어 업로드 기능은 본래 wp-admin 페이지에서 동작되는 걸로 설계되어 있어서,

    관리자 페이지가 아니면 코드가 100% 적용이 안될 수 있습니다.

    도저히 방법이 없다면 플러그인을 새로 제작하는 등 복잡하게 진행해야 할 수 있습니다.

    고맙습니다.

코스모스팜 회원관리