add_image_size 제거 또는 업데이트


16

다음을 사용하여 여러 이미지 크기가 올바르게 정의 된 테마를 작성 중입니다.

add_image_size( 'name', 500, 200, true );

하위 테마에서 이러한 정의 된 크기를 무시하고 싶습니다.

add_image_size( 'new-name', 400, 300, true );

새 크기를 추가 할 수 있지만 같은 이름을 추가하면

add_image_size( 'name', 400, 300, true );

그런 다음 부모 함수 호출이 사용됩니다-자식 규칙은 무시됩니다-여분의 규칙을 추가하면 사용되지 않는 추가 이미지가 추가됩니다-그렇게 나쁘지는 않지만 효율적이지 않습니다.

추가 된 이미지 크기를 등록 해제하는 기능이 있습니까?

건배!

레이


관련된 전체 코드 를 게시 할 수 있습니까 ? add_image_size()통화가 방금 ​​나란히 앉아 있습니까 functions.php, 아니면 콜백 안에 제대로 싸여져 after_setup_theme있습니까? 귀하의 질문에 답변하는 것이 무엇인지 아는 것.
칩 베넷

안녕 칩-귀하의 의견에 감사드립니다-당신은 그것이 after_setup_theme에 싸여 있습니다-그래서 이것은 우선 순위에 관한 모든 것입니다-나는 항상 그것을 그리워합니다!
Q Studio

답변:


22

add_image_size( $name, $width, $height, $crop )함수는 동일한를 사용하여 여러 호출을 처리 할 수있을만큼 우아합니다 $name. 단순히 기존 값을 덮어 씁니다 .

$_wp_additional_image_sizes[$name] = array( 'width' => absint( $width ), 'height' => absint( $height ), 'crop' => (bool) $crop );

당신이 필요로하는 모든 사용자 정의 이미지 크기의 부모 테마의 정의를 재정의 수행하는 것을 그 수단 있도록하는 것이 보장하는 것입니다 그 에게 전화 add_image_size()화재 부모 테마의 호출 .

부모 테마가 그렇게한다고 가정하면 :

function parent_theme_setup() {
    add_image_size( 'name', 500, 200, true );
    add_image_size( 'new-name', 400, 300, true );
}
add_action( 'after_setup_theme', 'parent_theme_setup' );

그런 다음 상위 테마의 add_image_size()호출 after_setup_theme이 기본 우선 순위 (예 :)로 후크에서 시작됩니다 10.

(참고 : 콜백으로 통화가 래핑 되지 않은 경우 plugins_loaded우선 순위 에 따라 후크에서 시작됩니다 10.)

중요한 부분은 다음과 같습니다. 하위 테마의 functions.php파일이 상위 테마 보다 먼저 구문 분석 되므로 동일한 후크를 사용하여 add_image_size()호출을 실행하면 상위 테마의 add_image_size()호출로 대체됩니다 .

해결책은 상위 테마 이후에 하위 테마의 호출이 발생 하도록 나중에 후크 또는 낮은 우선 순위 를 사용하는 것 입니다.add_image_size()

부모 테마가 호출을 시작하는 방법에 관계없이 트릭을 수행해야합니다.

function child_theme_setup() {
    add_image_size( 'name', 400, 300, true );
}
add_action( 'after_setup_theme', 'child_theme_setup', 11 );

동일한 after_setup_theme후크를 사용하지만 우선 순위낮은 우선 순위를 사용합니다 (즉 11, 10. 대신 우선 순위가 높은 우선 순위 (낮은 번호)에서 낮은 우선 순위 (높은 번호)까지 0콜백 11이 발생하므로 우선 순위에 연결된 콜백 은 이후에 실행됩니다. 우선 순위에 연결된 콜백 10.

있음을 유의하십시오 after_setup_theme후크 자체는 발사 plugins_loaded 이 콜백은 여전히 부모 테마가있는 경우에도, 부모 테마를 오버라이드 (override) 할 수 있도록, 후크 _doing_it_wrong()적절한 후크에 걸려 적절한 콜백 이러한 호출을 포장하지 않음으로써.


우수-칩 감사합니다! -나는 그들 모두를 같은 우선 순위에 두었습니다. 부모와 아이가 잘 작동 한 후에 아이를 다시 노칭했습니다.
Q Studio

플러그인이 add_image_size :(
Zhianc

1

누군가가 단순히 크기를 변경하는 대신 추가 이미지 크기를 설정 해제하려면 remove_image_size (string $ name)을 사용하십시오 .

function pinboard_child_theme_setup( $sizes) {

    $image_size_names = array('thumbnail', 'medium', 'large',
        'slider-thumb', 'blog-thumb', 'teaser-thumb', 'gallery-1-thumb',
        'gallery-2-thumb', 'gallery-3-thumb', 'image-thumb', 'video-thumb');

    $image_size_names_length = count($image_size_names);
    for($x = 0; $x < $image_size_names_length; $x++) {
        remove_image_size($image_size_names[$x]);
    }   
}
add_action( 'after_setup_theme', 'pinboard_child_theme_setup', 11);

-1

당신의 칠레 테마에서 당신은 사용해야합니다 add_action( 'after_setup_theme','new-name');


여기 new-name은 함수의 이름 또는 주 함수에 사용하는 이름입니다.
robin

답변에 설명을 추가하십시오. 왜 그리고 어떻게 문제를 해결합니까? 참고 new-name잘못된 콜백 이름입니다.
fuxia

"새 이름"은 단순히 추가되는 이미지 크기의 핸들입니다.
Q Studio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.