안녕하세요. 궁금한 것이 있어 글을 올립니다.
어설프게 워드프레스 테마를 하나 만들었습니다.
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 사이즈가 전혀 저장이 되지 않네요..ㅠ
혹시 특정 페이지에서 업로드 할때, 원하는 사이즈만 저장되게 설정할 수 있는 방법이 있나요?ㅠ..
조언을 부탁드려도 될런지요.. 감사합니다.
is_page(20) 이쪽에서 20이라는 것은 페이지의 id값입니다.
id값이 일치해야 하며,
그리고 상황에 따라서 동작이 안될 수 있습니다. (저희는 KBoard 글 쓸때 테스트틀 해봤습니다.)
왜냐하면 미디어 업로드 기능은 본래 wp-admin 페이지에서 동작되는 걸로 설계되어 있어서,
관리자 페이지가 아니면 코드가 100% 적용이 안될 수 있습니다.
도저히 방법이 없다면 플러그인을 새로 제작하는 등 복잡하게 진행해야 할 수 있습니다.
고맙습니다.
답변 감사합니다.
그런데
add_image_size를 if(is_page(20)){ } 안에 넣으면 전혀 해당사이즈가 전혀 추가되지 않네요..ㅠ
안녕하세요~^^
이미지 원본은 항상 저장됩니다.
아래는 예제 코드입니다.
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 함수도 적절히 사용을 해보시겠어요?
고맙습니다.